Enum
を受け取り、uint
にキャストする関数を作成しています。 int
にキャストするときに見たことから、最初にオブジェクトにキャストする必要があります。(int) (object) myEnumValue
(int) myEnumValue
と書くと、コンパイル時に例外が発生します。列挙型をuintにキャストする
今、私はそれをuintにキャストしようとしたとき、私は(uint) (object) myEnumValue
が問題ないと期待していました。うまくコンパイルされますが、実行するとInvalidCastException
が生成されます。だから私はこれをうまく利用するために使用しました
(uint) (int) (object) myEnumValue
私はそれが面白そうだと思うので、とても幸せですが、なぜそうですか?
多分uint
にobject
をキャストすることはできません理由を尋ねるために、より正確だったでしょうが、私はuint
にEnum
から行くために別の方法があるかどうかに興味があります。ある?
編集:
コンテキストは関数であり、このような何か:
:public static uint ToUInt (Enum e)
{
return (uint) (int) (object) e;
}
編集2:thecoopで述べたように
が最善の解決策でした
Convert.ToUInt32(e)
私がEnum:uintとしてEnumを指定した場合、それは逆の方法でしょうか? –
@ Jonatan:はい、その列挙型をuintとして囲み、強制的にuintとしてunboxする必要があります。 –
そうです。(uint)eはうまくいくが、(int)eは爆発するだろう。 –