C#枚举值不强制执行
在C#中,使用枚举C#枚举值不强制执行,c#,enums,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
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);
为什么它有意义?
结果基本相同
Reed Copsey的回答解释了为什么第一个有效,以及为什么它会这样
但我看不到第一个和第二个代码片段之间的真正区别,尤其是第二个代码片段似乎更直观,并暗示了这种行为
是否有方法更改此行为(在运行时之前)
(我不是在寻找一种在运行时强制执行枚举的方法)。我假设这是一种方法,其第二个参数采用
ShoppingCartType
。编辑,希望现在已经清楚:)仅供参考-第一个副本解释了如何避免问题;第二个解释了为什么首先允许它发生。