.NET中的variable = 0和variable =之间有什么区别?

k80*_*0sg 5 .net vb.net

有什么区别:

Dim intVal as integer
intVal = 0
Run Code Online (Sandbox Code Playgroud)

intVal = nothing
Run Code Online (Sandbox Code Playgroud)

我从MSDN上读到没有任何东西将值设置为0:

来自MSDN:

Public Structure testStruct
    Public name As String
    Public number As Short
End Structure
Dim ts As testStruct, i As Integer, b As Boolean
ts = Nothing 
' The preceding statement sets ts.name to "" and ts.number to 0.
i = Nothing 
b = Nothing 
' The preceding statements set i to 0 and b to False. 
Run Code Online (Sandbox Code Playgroud)

Sal*_*iti 8

对象引用通常不使用任何内容,如果将其分配给值类型,则使用默认值对其进行初始化.在.NET世界中,默认值只是一个充满零的内存块.因此,分配给nothing的整数将为0,分配给nothing的结构将是填充为零的结构.

空引用是一个特殊引用,它意味着没有引用,实际上表示为具有全零的指针.

在C#中,您可以使用它default(TYPE)来获得相同的结果,它用于将零分配给您想要的任何内容.

字符串是引用类型,如object,因此字符串不会分配给""但是Nothing,字符串不是值类型.

Dim s as String
s = Nothing

Console.WriteLine Object.ReferenceEquals(s, Nothing) ' Will print true
Console.WriteLine Object.ReferenceEquals(s, "") ' Will print false
Run Code Online (Sandbox Code Playgroud)

字符串仍然是引用类型,因此当您将其指定为Nothing时,您将引用设置为零.