2010-12-07 39 views
4

VB.NET編譯:昏暗intResult作爲整數=無

Dim intResult As Integer = Nothing 

C#不:

int intResult = null; // cannot convert 

怎樣的結果終於去MSIL?

更是超過,VB代碼是OK:

If intResult > Nothing Then 

編輯

OK,MS says

分配沒有一個變量它設置爲它聲明的默認值類型。

但它並不能說明Nothing比較 -

回答

8

Nothing在VB.NET中實際上相當於C#中的default(Type)

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

根據VB.NET Language Reference:「將Nothing賦予變量將其設置爲其聲明類型的默認值,如果該類型包含可變成員,則它們全部設置爲其默認值。


編輯:關於比較結果來Nothing:我猜intResult > Nothing 被解釋爲intResult > 0,由於intResult編譯時類型是Integer,其具有0。如果類型的默認值的intResult是不知道在編譯時(例如,它是盒裝的Integer),我懷疑這不會編譯。

有關類似示例(Nothing < 2),請參見VB.NET語言參考頁面底部的Community Content section

+0

另外,C#中的int類型不能爲null。 – 2010-12-07 13:57:40

+0

@Chuck:在VB中都沒有。 – serhio 2010-12-07 13:58:13

0

在c#中,Ints不是可以爲空的。如果你想要的話可​​以使用System.Nullable<int>簡稱是

int? result = null

相關問題