作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 C# 中寻找代码优化,允许我同时定义枚举和创建该枚举类型的变量:
之前:
enum State {State1, State2, State3};
State state = State.State1;
之后(不起作用):
enum State {State1, State2, State3} state;
state = State.State1;
有这样的东西吗?
最佳答案
在 C# 中不支持它,但也许你可以解决这个问题,如果你只需要切换一些状态而不需要做任何特殊的事情,那么你可以使用元组或匿名类型做一些“接近”枚举的事情用它来操作。
例如,使用元组,你可以这样做:
var someFakeEnum = Tuple.Create(0, 1);
C# 7 引入了句法元组:
var someFakeEnum = (State1: 0, State2: 1);
或者匿名类型:
var someFakeEnum = new { State1 = 0, State2 = 1 };
然后,您可以执行以下操作:
int state = 0;
// If you're using tuples...
if(some condition)
{
state = someFakeEnum.Item2;
}
// ...or if you're using anonymous types or C# >= 7 tuples...
if(some condition)
{
state = someFakeEnum.State2;
}
显然这不是一个实际的枚举,您没有 Enum 类型为您提供的糖分,但您仍然可以像任何其他实际枚举一样使用二元运算符,如 OR、AND 或条件。
关于c# - 在 C# 中,有没有办法同时定义枚举和该枚举的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177820/
我是一名优秀的程序员,十分优秀!