在c#中的开关情况下分配枚举
本文关键字:情况下 分配 枚举 开关 | 更新日期: 2023-09-27 18:23:46
我需要在switch case语句中更改Enum,如下所示
var en;
switch (RequestTypID.ToString())
{
case "15":
en = enum1;
break;
case "16":
en = enum2;
break;
case "14":
en = enum3;
break;
case "13":
en = enum4;
break;
default:
break;
}
然后将其传递到像这样的foreach循环
foreach (var status in Enum.GetValues(typeof(en)))
我看到一个错误,说en必须初始化?我应该为en变量声明什么类型?我应该为状态变量声明什么类型?
好吧,我把这一行添加到代码中,一个问题就解决了;
var en = typeof(enum1);
但现在它说在我的每个循环中都找不到en参考?
我还把我的开关盒换成了类似的东西
switch (RequestTypID.ToString())
{
case "15":
en = typeof(enum1);
break;
....
Enum.GetValues
需要一个Type作为参数。所以简单地将您的en
声明为Type
。
Type en = null;
您不能在不初始化它的情况下将其声明为var
:编译器需要知道您想要使用的真实类型是什么。
此外,您必须更改您的交换机:
en = typeof(SomeEnum);
不能用var
创建变量(var
不是类型)而不给它赋值。Var
意味着编译器会根据它的值来评估它的type
,但这里没有变量的值。因此,您需要为变量en
分配一个值。分配一个类型为enum1、enum2、enum3、enum4的值。。
我看到一个错误,说en必须初始化?
这是合理的,因为这个var en;
是不正确的。当我们想隐式声明某个东西时,我们必须在声明它时为它赋值,以便编译器推断它的类型。
例如var n = 4;
。CCD_ 12可以被存储到类型为CCD_。因此,编译器,当看到这个声明时,理解n的tyoe int.
您必须在var
语句的右侧有另一个变量,这样编译就知道会发生什么。
您应该执行以下操作:
var en = YourEnum.Option1;
或
YourEnum en;