作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
下午好,假设我有枚举
public enum Test : int
{
TestValue1 = 0,
TestValue2,
TestValue3
}
为什么我不能使用像 Int32 IntTest = Test.TestValue1
这样的语句而不用转换来表示 IntTest = 0
?如果我稍后决定向枚举中添加更多项目会有用吗?我想我被迫使用 Int32 IntTest = (Int32) Test.TestValue1
,我认为这应该是多余的......另外,为什么我不能做类似的东西
switch (IntTest)
{
case (Test.TestValue1) : DoSomething();
break;
case (Test.TestValue2) : DoSomethingElse();
break;
default : Do Nothing();
}
?编译器说它需要一个常量值来代替 TestValue1
...这个值不是常量吗?
非常感谢。
最佳答案
请注意,您可以这样做:
switch ((Test)IntTest)
{
case (Test.TestValue1) : DoSomething();
break;
case (Test.TestValue2) : DoSomethingElse();
break;
default : DoNothing();
}
从 int 到 Test 的转换保证不会失败,即使该值不在枚举中也是如此。如果枚举中不存在该值,则在 Test 实例上调用 ToString() 将返回基础数值的字符串表示形式。
关于c# - 在 C# 中使用不强制转换的整数枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247180/
我是一名优秀的程序员,十分优秀!