nullable列挙型へのキャストに関する質問があります。コードは次のとおりです。null可能な列挙型へのキャスト
enum Digits
{
One = 1,
Two = 2
}
void Main()
{
int one = 1;
object obj = one;
var en = (Digits?) obj;
Console.WriteLine(en);
}
これは、私にInvalidCastException
の行番号11を与えます。
ただし、「?」を省略した場合それは正しい結果 "One"を与えますが、 "nullability"を失いたくはありません。
回避策として、var en = (Digits?) (int?) obj;
を使用していますが、そのようなソリューションの完全な正確性はわかりませんが動作します。
しかし、私はなぜnullable enumへのキャストが最初のケースで失敗するのだろうか?私は次のようにNULL可能なタイプにキャストすることは働くことが期待さ
: - 成功はその後、NULL可能タイプに
をキャストした場合、非NULL可能型にキャスト -
null
が渡された場合、結果はnull
同様
だろう。しかしそれは真実ではないようです。
をも参照のhttp:/ /stackoverflow.com/questions/5199419/c-sharp-cast-object-of-type-int-to-nullable-enum – simonalexander2005