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 Module
Module 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
End Module