在c#

时间:2015-11-22 08:42:53

标签: c# enums

我需要在下面的

中更改我的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; 
                    ....

4 个答案:

答案 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);