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

osc*_*tin 5 vb.net nothing

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

slo*_*oth 8

可悲的是没有.


但是,您可以在跳过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
Run Code Online (Sandbox Code Playgroud)