当我在VB.NET中将变量设置为空时会发生什么? 是否真的没有什么等于违约,或者我在这里遗漏了什么?
答案 0 :(得分:9)
如果它是一个值类型(如Integer,Double等),则将变量设置为Nothing会将其设置为默认值。
如果它是引用类型,它实际上将被设置为Nothing(空值)。
为变量集分配Nothing 它是它的默认值 声明的类型。
如果变量是参考 类型,值为Nothing意味着 变量与之无关 任何对象。该变量为null 值。
答案 1 :(得分:1)
它等于ValueTypes或Structs上的默认值,并且在Object types上等于null。
答案 2 :(得分:1)
如果你在C#
中有这样的结构,那么真正让你感到困惑的是什么int? result = (a != null ? a.b : (int?)null);
并将其替换为以下VB(编译时)
Dim result As Integer? = If(a IsNot Nothing, a.b, Nothing)
结果会是什么?
答案是它将为0,而不是null。
答案 3 :(得分:0)
假设VB.NET与C#很相似,null
在VB.NET中称为Nothing
意味着引用不指向任何内容。声明但未分配时,所有类型都具有默认值:例如,int
的默认值为0
。引用类型的默认值是空值Nothing
。因此,引用类型的未分配变量将具有值Nothing
(null)。
答案 4 :(得分:0)
Eric Lippert在Null vs Nothing上有一篇很好的博客文章
在所有情况下,没有什么不等于默认值。