5

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

4

2 回答 2

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
于 2012-08-01T11:36:10.157 回答
3

在 C# 语言中,没有什么可以等同于默认值。所以不行。

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

于 2012-08-01T11:48:10.497 回答