1. ホーム
  2. c#

[解決済み] C# で Int を Generic Enum にキャストする

2022-11-19 18:42:05

質問

類似の C#でintをenumにキャストする と似ていますが、私のenumはGeneric Typeのパラメータです。 この場合 ベスト を処理する方法は何ですか?

private T ConvertEnum<T>(int i) where T : struct, IConvertible
{
    return (T)i;
}

コンパイラーエラーを発生させる Cannot convert type 'int' to 'T'

完全なコードは以下の通りです。valueにはintまたはnullを指定できます。

private int? TryParseInt(string value)
{
    var i = 0;
    if (!int.TryParse(value, out i))
    {
        return null;
    }
    return i;
}

private T? TryParseEnum<T>(string value) where T : struct, IConvertible
{
    var i = TryParseInt(value);
    if (!i.HasValue)
    {
        return null;
    }

    return (T)i.Value;
}

どのように解決するのですか?

私が見つけた最も簡単な方法は、コンパイラの手を煩わせることなく、キャストを object .

return (T)(object)i.Value;