0

可能重复:
为什么枚举需要显式转换为 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
}

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

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。

我的误解在哪里?

4

2 回答 2

6

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

由于您的枚举是一个 int,因此如果您明确指定强制转换,则可以这样做:

int StartGroup = (int)GroupTypes.gt_table0 + i;
于 2012-10-19T14:41:32.540 回答
2

:int 的使用只影响枚举的存储类,而不影响它的任何行为

于 2012-10-19T14:43:06.443 回答