在C#中,使用枚举
public enum ShoppingCartType
{
ShoppingCart = 1,
Wishlist = 2,
}
public class foo
{
public void bar(int parameter1,ShoppingCartType type)
{
//do something
}
}
以下代码编译并安静地运行
foo.bar(param1,(ShoppingCartType)30);
没有强制转换,以下代码甚至不会编译
foo.bar(param1,30);
为什么有意义? 结果基本相同..
Why does casting int to invalid enum value NOT throw exception? Reed Copsey的回答解释了为什么第一个有效,以及它为什么会这样。
但我不会在这里看到第一个和第二个代码片段之间的真正差异,尤其是第二个代码片段似乎更直观并暗示了这种行为。
有没有办法改变这种行为(在运行时之前)?
(我不想在运行时强制执行枚举)。