potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

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検索で英単語を並べる方が良いみたいです。