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 に答える