枚举和值类型

时间:2012-10-19 14:38:18

标签: c# enums

  

可能重复:
  Why enums require an explicit cast to int type?

我定义了这个枚举:

public enum GroupTypes : int
{
    gt_table0 = 0
    gt_table1 = gt_table0 + 1,
    gt_table2 = gt_table1 + 1,
    gt_table3 = gt_table2 + 1,
    gt_table4 = gt_table3 + 1,
    gt_table5 = gt_table4 + 1,
    gt_table6 = gt_table5 + 1,
    gt_table7 = gt_table6 + 1,
    gt_table8 = gt_table7 + 1
}

然后我按如下方式使用此枚举:

for (int i = 0; i < NbrTables; i++)
{
    // Compute starting table
    int StartGroup = GroupTypes.gt_table0 + i;

    // Some more code here        
}

我感到困惑的是当我使用枚举来计算我的StartGroup时,我得到错误“无法将类型'GroupTypes'隐式转换为'int'。显式转换存在'。

我认为我会避免这个错误,因为我将GroupTypes枚举声明为int。

我的误解在哪里?

2 个答案:

答案 0 :(得分:6)

  

我以为我会避免这个错误,因为我宣布了   GroupTypes枚举为int。

由于您的枚举是一个int,如果您明确指定了强制转换,则可以执行此操作

int StartGroup = (int)GroupTypes.gt_table0 + i;

答案 1 :(得分:2)

使用:int仅影响枚举的存储类,但不影响其任何行为