VB.NET循环体内的局部变量2009-10-08 博客园 Gster我们知道,在类或者结构初始化的时候, 成员变量最好不要显式赋以0、Nothing、False等初值,这样不但没有必要而且会降低性能。因为成员变量首先会被分配内存空间,并且该内存空间自动用“0”进行初始化,因此显式的赋值会增加指令操作而影响性能。但如果是局部变量呢?一般情况下,如果不显式初始化局部变量,局部变量会被自动也赋以空值、0、或者false。"例如以下代码 Dim b As Boolean Console.WriteLine(b) Dim rnd1 As Random If rnd1 Is Nothing Then Console.WriteLine("yes") End If"最终会输出:"false yes"不过对于引用类型的Random,编译器会给出“ 变量“rnd1”在赋值前被使用。可能会在运行时导致 null 引用异常。” 的警告。值类型则没有任何警告。ok,再来看下这段代码: 1Module Module1Module Module1 2 3 Sub Main()Sub Main() 4 Dim rnd As New Random(1000) 5 For i As Integer = 0 To 4 6 Dim b As Boolean 7 Console.WriteLine(b) 8 If rnd.NextDouble > 0.5 Then 9 b = True 10 End If 11 Next 12 End Sub 13 14End ModuleModule Module1 Sub Main() Dim rnd As New Random(1) For i As Integer = 0 To 9 Dim b As Boolean Console.WriteLine(b) If rnd.NextDouble < 0.5 Then b = True End If Next For i As Integer = 0 To 9 Dim rnd1 As Random If rnd1 Is Nothing Then Console.WriteLine("yes") Else Console.WriteLine("no") End If rnd1 = New Random Next End Sub