2012-08-01 80 views
5

這真的讓我感到震驚,VS 2010 IDE並沒有吼我試圖通過一個方法參數傳遞Nothing來取得用戶定義的枚舉。相反,它將0傳遞給該方法。 C#永遠不會允許這個。是否有一些模塊級修飾符可以像option strict那樣添加,這將迫使IDE不允許這些類型的隱式轉換?VB.NET:有沒有辦法讓數字類型的默認值爲0?

回答

6

不幸的是,沒有。


但是你可以同時跳過0值分配給您枚舉成員(或使用名爲None或類似的東西佔位符),並且至少處理這種情況在運行時。

Sub Main 
    MyMethod(Nothing) ' throws Exception 
End Sub 

Sub MyMethod(e as MyEnum) 
    If e = 0 Then 
     Throw New Exception 
    End If 
End Sub 

Enum MyEnum 
    a=1 
    b=2 
    c=3 
End Enum 
+0

很好的答案,但它讓我難過。 – oscilatingcretin 2012-08-03 18:14:17

3

沒有什麼默認在C#語言中的等價物。所以不行。

重新考慮你的編程風格,沒有應該使用非常節制。基本上只在通用代碼中,你可以在C#中使用默認。你不需要它,VB.NET不會像C#那樣堅持變量初始化。任何引用類型的變量都會自動初始化爲Nothing。可能對C#程序員有價值,但在VB.NET代碼中完全慣用。

+0

我不認爲很容易避免將'Nothing'作爲方法參數(這是OP正在討論的情況)。 – Heinzi 2012-08-01 11:51:01

+0

這也是可能的,可選參數一直得到很好的支持。 – 2012-08-01 11:52:20

相關問題