Nothing等于Default吗?

时间:2009-12-29 18:29:26

标签: vb.net

当我在VB.NET中将变量设置为空时会发生什么? 是否真的没有什么等于违约,或者我在这里遗漏了什么?

5 个答案:

答案 0 :(得分:9)

如果它是一个值类型(如Integer,Double等),则将变量设置为Nothing会将其设置为默认值。

如果它是引用类型,它实际上将被设置为Nothing(空值)。

Microsoft's words中:

  

为变量集分配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上有一篇很好的博客文章

在所有情况下,没有什么不等于默认值。