我有一个int带有两个值的枚举(基础类型),以及一个带有该类型参数的方法.是否可以将任何int值转换为我的枚举类型并将其传递给方法?如果是这样,枚举的优点是什么?是不是应该限制可用值的选择?
class Program
{
public void Greeting(MyCode code)
{
Console.WriteLine(code);
}
static void Main(string[] args)
{
var p = new Program();
var m = new MyCode();
m = (MyCode) 3;
p.Greeting(m);
}
}
public enum MyCode:int
{
Hello =1,
Hai
}
Run Code Online (Sandbox Code Playgroud)
是的,您可以转换基础类型的任何值.在这种意义上,枚举类型不是限制类型.
使用枚举的优点是:
我同意更多类型也是有用的,但它在C#中不存在.您可以在C#中构建自己的基于类的"伪枚举",它允许一组受限制的值(使用私有构造函数),但是:
另一方面,这些类型可以多态地行动并且具有比普通枚举更多的信息,这可以是有用的.
只是为了补充Jon的答案:你可以随时使用
Enum.IsDefined(typeof(MyCode), value)
Run Code Online (Sandbox Code Playgroud)
检查枚举定义中是否存在提供的值.
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |