Nothing 关键字(Visual Basic)
表示任意数据类型的默认值。 对于引用类型,默认值为 null 引用。 对于值类型,默认值取决于值类型是否可以为 null。
对于不可为 null 的值类型,Visual Basic 中的 Nothing 不同于C#中的 null。 在 Visual Basic 中,如果将不可为 null 的值类型的变量设置为 Nothing,则该变量将设置为其声明的类型的默认值。 在C#中,如果将不可为 null 的值类型的变量分配到 null,则会发生编译时错误。
Nothing 表示数据类型的默认值。 默认值取决于变量是值类型还是引用类型。
值类型的变量直接包含其值。 值类型包括所有数值数据类型、Boolean、Char、Date、所有结构和所有枚举。 引用类型的变量存储对内存中对象的实例的引用。 引用类型包括类、数组、委托和字符串。
如果变量是值类型,则 Nothing 的行为取决于变量是否为可为 null 的数据类型。 若要表示可以为 null 的值类型,请将 ? 修饰符添加到类型名称。 将 Nothing 分配给可以为 null 的变量会将值设置为 null。 有关详细信息和示例,请参阅可以为 null 的值类型。
如果变量是不可为 null 的值类型,则将 Nothing 分配给它会将它设置为其声明类型的默认值。 如果该类型包含变量成员,则它们都设置为其默认值。
引用类型肯定是可以为nothing的
可以为 Null 的值类型 (Visual Basic)
有时,使用在某些情况下没有定义值的值类型。 例如,数据库中的字段可能必须区分具有有意义的赋值和没有赋值。 可以扩展值类型以获取其正常值或空值。 这种扩展称为空类型。
每个空值类型都是从泛型Nullable结构构造的。 考虑跟踪与工作相关的活动的数据库。 下面的示例构造一个可Booleannull 的类型,并声明该类型的变量。 可以通过三种方式编写声明:
Dim ridesBusToWork1? As Boolean
Dim ridesBusToWork2 As Boolean?
Dim ridesBusToWork3 As Nullable(Of Boolean)
综合示例
Imports System
Class Test
Private t As Integer
Sub New(ByVal tv As Integer)
'构造函数
Me.t = tv
End Sub
Sub New()
'构造函数
Me.t = 0
End Sub
End Class
Module Program
Sub Main(args As String()