【VB.NET高效编程】之『变量声明』
vb2010吧
全部回复
仅看楼主
level 9
lipeiyi2006 楼主
[一楼喂熊]
2012年08月12日 13点08分 1
level 9
lipeiyi2006 楼主
任何一个高级语言程序都离不开变量(Variable) ,变量是程序与计算机内存数据交流的媒介,为了寻求更高效的程序执行效率和可读性,我们往往需要在变量命名方式,声明位置,作用域上下功夫。
因此,让我们来了解一下如何在VB.NET种声明和使用变量,让程序变得内存占用更少,执行效率更快!

2012年08月12日 13点08分 2
level 9
lipeiyi2006 楼主
在此之前,我们有必要了解一下变量在内存中存储的位置和内存分配。
1、栈区(stack)— 存放函数的参数,局部变量等。
在 WINDOWS下,栈的大小是2M,如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
下面的参数和变量都存放在stack
Private Sub ABS(ByVal p As String)
 Dim a As Int32
End Sub
2、堆区(heap) — 一般由程序员分配释放(new Object),若程序员不释放,程序结束时可能由OS回收。
堆获得的空间比较灵活,也比较大(几百兆甚至上G)。
下面的变量存放在heap
Private s As New MyClass
3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域- < 程序结束后有系统释放 >
static a As Integer
4、文字常量区 —常量字符串就是放在这里的。< 程序结束后由系统释放 > -- 只读区
Private Const a As String = "abc"

2012年08月12日 14点08分 3
level 9
lipeiyi2006 楼主
楼上主要是简单讲了一下局部变量的声明技巧。下面说一下关于"隐式的变量声明"
有时候我们并没有使用Dim或者Private,Public,Protected 来显式声明变量,但是实际情况是程序会在某些场合隐式声明变量,占用内用空间,下面有两个例子:
字符串常量:
If s = "abc123" Then ...
这种情况下不要以为"abc123"不会占用内存,相反它将是以字符串常量的形式被隐式声明。
效果等同:
Const * As String = "abc123"
If s = * Then ...
/>>>>>>>>>>>>>>>
函数表达式的合写:
Dim a As Integer = func1(func2)'//假设func2()返回Integer
效果等同:
Dim * As Integer = func2()
Dim ** As Integer = func1(*)
Dim a As Integer = **

2012年08月12日 14点08分 5
Option Strict On不允许隐式申明变量,这有利于防止输入变量名是手滑。而起还半天早不到错。。。。。。
2012年08月13日 00点08分
level 9
lipeiyi2006 楼主
呃……就先介绍到这里,其实我想说一些变量声明的陋习的。。。呃怎么说成这个了。。就这样吧。[囧]
->>>>>>>>>>>>>>>>>>>>>>>>>>>> ybusad 2012/8/12
2012年08月12日 14点08分 6
level 13
哥,你图太多,浏览器卡了[88]
2012年08月13日 00点08分 7
都是小图啊,什么浏览器?
2012年08月13日 00点08分
回复 lipeiyi2006 :谷歌
2012年08月13日 00点08分
level 13
需要判断的语句写在声明语句上面,判断失败则Return
If abc <> "abc" Then Return '//返回,不执行下面的语句
Dim a,n,m As Double
return回哪儿啊??,求详例
2012年08月13日 00点08分 8
level 9
lipeiyi2006 楼主
回8L
Sub A()
 Call B()
->返回到这里
....
End Sub
Sub B()
 Return
....
End Sub
2012年08月13日 00点08分 9
1