6

基になる型がバイトである列挙型があるとします。

enum EmpType : byte
{
    Manager = 1,
    Worker = 2,
}

この列挙型 (この場合はバイト) の基になる型に int リテラルをキャストできますか?

このようなものは機能しません (エラー: "; expected"):

byte x = (Enum.GetUnderlyingType(typeof(EmpType)))15;

(byte)15 を明示的に書かずに基になる型にキャストできますか?

ありがとう。

4

2 に答える 2

6

以下でうまくいくと思います。しかし、すべての場合に望ましい動作が得られるかどうかはわかりません。

var x = Convert.ChangeType(15, Enum.GetUnderlyingType(typeof(EmpType)))
于 2013-05-07T03:56:40.647 に答える
1

あなたが何をしようとしているのか完全にはわかりません。以下は、int を enum に、またはその逆にキャストすることに関する関連する質問です。この場合、同じことが byte にも当てはまります。

整数を列挙型にキャストすることは可能ですか?

実行時に基になる型を検出したい場合...それは厄介で多くの作業のようです。基になる型の名前に基づいて case ステートメントを実行できます。型の安全性に関する懸念があるため、それがあなたに何をもたらすかはわかりません。

于 2013-05-07T03:57:07.633 に答える