VB.NET:对于数字类型,有没有办法让Nothing默认为0?

时间:2012-08-01 11:21:41

标签: vb.net nothing

我真的很烦我VS 2010 IDE并没有因为试图通过带有用户定义枚举的方法参数传递Nothing而咆哮。相反,它将0传递给方法。 c#永远不会允许这个。是否有一些我可以添加的模块级修饰符,如option strict,它会强制IDE不允许这些类型的隐式转换?

2 个答案:

答案 0 :(得分:7)

可悲的是,没有。


但您可以在跳过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

答案 1 :(得分:3)

C#语言中没有任何东西等同于默认。所以不行。

重新考虑您的编程风格, Nothing 应该谨慎使用非常。基本上只在通用代码中,在C#中使用 default 的相同位置。你不需要在其他任何地方使用它,VB.NET并不像C#那样坚持变量初始化。引用类型的任何变量都会自动初始化为Nothing。对于C#程序员来说可能是值得的,但在VB.NET代码中完全不是惯用的。