potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

C# ジェネリック関数でEnum型を整数へ変換する

ジェネリック関数ではenum型は通常の方法((int)...)で整数へ変換できません。 Convert.ToInt32Convert.ToUInt32等を使えばジェネリック関数でもEnum型を整数へ変換できます。

using System;

Console.WriteLine(f(Enum1.A));

string f<T>(T t) where T : Enum
{
    // コメント解除すると以下のエラーが発生します。
    // エラー CS0030  型 'T' を 'uint' に変換できません
    //return $"{t} ({(uint)t})";

    return $"{t} ({Convert.ToInt32(t)})";

}

enum Enum1
{
    A = 0,
    B
}

日本語版Google検索でいくら検索しても非ジェネリック環境で(int)...するコードばかりヒットしました。SEOが優秀な某サイト群です。 専門的な情報は英語版Google検索で英単語を並べる方が良いみたいです。