1

次のメソッドと列挙型があります。

public int GetRowType(string pk) 
    {
        return Convert.ToInt32(pk.Substring(2, 2));
    }


public enum CONTENT {
    Menu = 0,
    Article = 1,
    FavoritesList = 2,
    ContentBlock = 3,
    Topic = 6,
    List = 7
};

ここで、メソッドの結果が列挙型の値と等しいかどうかを確認しようとしていますが、エラーが発生しています。

GetRowType(content) == CONTENT.Topic

誰かが私が間違っていることについてアドバイスをくれますか?

Gives me an error: Error    2   
Operator '==' cannot be applied to operands of type 'int' and 'Storage.Constants.CONTENT'
4

3 に答える 3

6

明示的に列挙値をintにキャストするだけです

GetRowType(content) == (int)CONTENT.Topic
于 2012-09-14T17:27:42.277 に答える
2

列挙型を int に明示的にキャストする必要があります。

(int)CONTENT.Topic

メソッドが列挙型を返す方が理にかなっているかもしれないと言いました(今回はメソッド内の列挙型に int を明示的にキャストします)

于 2012-09-14T17:28:19.330 に答える
1

全体のアイデアは、列挙型を直接操作することです。したがって、メソッドを修正して、整数ではなく列挙型を返すには:

public CONTENT GetRowType(string pk) 
{
    int temp = Convert.ToInt32(pk.Substring(2, 2));
    if (Enum.IsDefined(typeof(CONTENT), temp)) 
    { 
        return (CONTENT)temp;
    }
    else throw new IndexOutOfRangeException();
}
于 2012-09-14T17:34:15.680 に答える