我需要在下面的
中更改我的Enum in switch case语句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)))
我想说一个错误,说必须初始化? 我应该为变量声明什么类型? 我应该为状态变量声明什么类型?
好吧,我已经将这一行添加到代码中,并解决了一个问题;
var en = typeof(enum1);
但现在它说它无法在我的每个循环中找到引用?
我也将我的开关盒更改为类似的东西
switch (RequestTypID.ToString())
{
case "15":
en = typeof(enum1);
break;
....
答案 0 :(得分:1)
我认为必须初始化的错误?
这是合理的,因为此var en;
不正确。当我们想隐式声明某些东西时,我们必须在声明它时给它赋值,以便编译器推断出它的类型。
例如,var n = 4;
。 4
可以存储到int
类型的变量中。因此编译器,当看到这个声明时理解n int的tyoe。
答案 1 :(得分:1)
您无法使用var
创建变量(var
不是类型)并且不为其赋值。Var
表示编译器将对其进行评估{{1看到它的值,但在这里你没有变量的值。所以你需要为变量type
赋值。分配一个类型为 enum1,enum2,enum3的值, enum4 强> ..
答案 2 :(得分:1)
你必须在var
语句的右侧有另一个变量,以便编译知道会发生什么。
您应该执行以下操作:
var en = YourEnum.Option1;
或
YourEnum en;
答案 3 :(得分:1)
Enum.GetValues
需要Type作为参数。因此,只需将en
声明为Type
。
Type en = null;
如果没有初始化它就不能将它声明为var
:编译器需要知道你想要使用的真实类型。
另外,你必须改变你的开关:
en = typeof(SomeEnum);