[英]assign enum in switch case in c#
我需要像下面这样更改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变量声明什么类型? 我应该为状态变量声明什么类型?
好吧,我已经在代码中添加了这一行,并解决了一个问题;
var en = typeof(enum1);
但是现在它说找不到每个循环中的en参考?
我也将开关盒改成这样
switch (RequestTypID.ToString())
{
case "15":
en = typeof(enum1);
break;
....
我遇到错误,提示必须进行初始化?
这是合理的,因为此var en;
是不正确的。 当我们想隐式声明某些东西时,我们必须在声明它时给它赋一个值,以便编译器推断出它的类型。
例如, var n = 4;
。 可以将4
存储到int
类型的变量中。 因此,编译器在看到此声明时会理解n int的类型。
您不能使用var
创建变量( var
不是类型),也不能为其分配值。 Var
表示编译器将查看它的值来评估其type
,但是这里没有变量的值,因此需要为变量en
分配一个值。分配一个类型为enum1,enum2,enum3,enum4的值 ..
您必须在var
语句的右侧添加另一个变量,以便编译器知道预期的结果。
您应该执行以下操作:
var en = YourEnum.Option1;
要么
YourEnum en;
Enum.GetValues
需要类型作为参数。 所以,简单地宣布,你en
的Type
。
Type en = null;
您不能在不初始化的情况下将其声明为var
:编译器需要知道您要使用的实际类型是什么。
另外,您还必须更改开关:
en = typeof(SomeEnum);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.