枚举和值类型

Jim*_*man 0 c# enums

可能重复:
为什么枚举需要显式转换为int类型?

我定义了这个枚举:

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
}
Run Code Online (Sandbox Code Playgroud)

然后我使用这个枚举如下:

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

    // Some more code here        
}
Run Code Online (Sandbox Code Playgroud)

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

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

我的误解在哪里?

hei*_*erg 6

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

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

int StartGroup = (int)GroupTypes.gt_table0 + i;
Run Code Online (Sandbox Code Playgroud)