.NET 中的可空值类型
在 .NET 中,有引用类型与值类型两种对象类型,而其中值类型是“不可空”的类型,比如你设定一个
然而有些时候,我们需要一个可空的值类型(比如数据库中的可空字段),那么该怎么办呢?
VB在判断数值是否为空时,一定要用
实际上数值后面加问号的写法,只是 .NET 的语法糖,而其真正的声明与使用代码,应该是下面的示例代码:
而其中的
int i = null
,那么它会使用默认值0
来为自己赋值。然而有些时候,我们需要一个可空的值类型(比如数据库中的可空字段),那么该怎么办呢?
可空值类型
其实在 .NET 中,你只需在数据类型的后面添加一个?
问号,即可将该数值设置为一个可空值类型!Dim i As Integer? = Nothing
If i IsNot Nothing Then
MsgBox(i)
End If
int? i = null;
if(i != null) {
MessageBox.Show(i.ToString());
}
需要注意的是:VB在判断数值是否为空时,一定要用
变量 IsNot Nothing
来进行判断,变量 <> Nothing
是错误用法!原理分析
看完了上面的演示代码,你就已经算是掌握了可空值类型的用法,但如果你想追根究底,那么我们就来分析一下可空值类型到底是什么原理。实际上数值后面加问号的写法,只是 .NET 的语法糖,而其真正的声明与使用代码,应该是下面的示例代码:
Dim i As Nullable(Of Integer) = Nothing
If i.HasValue Then
MsgBox(i.Value)
End If
Nullable<int> i = null;
if( i.HasValue ) {
MessageBox.Show(i.Value.ToString());
}
所谓的可空值类型,不过是用了一个名为 Nullable
的结构对象来装载了我们所指定的数据类型,而在判断的过程中,语法糖将我们的判断语句改换成了 i.HasValue
函数,用来判断当前的对象是否包含数据。而其中的
i.Value
属性保存了我们所设定的数值,如果你将数值设为了null,那么它就会返回一个错误来提醒你未初始化对象!本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。