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