Dim intResult As Integer = Nothing

时间:2010-12-07 13:53:47

标签: c# .net vb.net

VB.NET编译:

Dim intResult As Integer = Nothing

C#没有:

int intResult = null; // cannot convert

结果最终如何转到MSIL?

比VB代码还好:

If intResult > Nothing Then

修改

好的,MS says

  

为变量赋值Nothing将其设置为其声明类型的默认值。

但它没有说明Nothing 比较

2 个答案:

答案 0 :(得分:8)

VB.NET中的

Nothing实际上等同于C#中的default(Type)

所以int intResult = default(int);是C#的等价物。

根据VB.NET Language Reference:“为变量赋值没有将其设置为其声明类型的默认值。如果该类型包含变量成员,则它们都被设置为默认值。”


修改:关于与Nothing的比较: 我猜intResult > Nothing被解释为intResult > 0,因为编译时类型intResultInteger,其默认值为0.如果intResult的类型在编译时不知道(例如,它是一个盒装Integer),我怀疑这不会编译。

有关类似示例(Nothing < 2),请参阅VB.NET语言参考页面底部的Community Content section

答案 1 :(得分:0)

Int在c#中不可为空。如果您愿意,可以使用System.Nullable<int>简称

int? result = null