不强制执行C#枚举值

时间:2014-07-19 13:07:42

标签: c# enums

在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的回答解释了为什么第一个有效,以及它为什么会这样。

但我不会在这里看到第一个和第二个代码片段之间的真正差异,尤其是第二个代码片段似乎更直观并暗示了这种行为。

有没有办法改变这种行为(在运行时之前)?

(我不想在运行时强制执行枚举)。

0 个答案:

没有答案