我有一個關於鑄造爲空的枚舉的問題。這裏是一個代碼:鑄造爲可空枚舉
enum Digits
{
One = 1,
Two = 2
}
void Main()
{
int one = 1;
object obj = one;
var en = (Digits?) obj;
Console.WriteLine(en);
}
它給我行#11。
但是,如果我省略'?'符號在那一行,它給出了正確的結果「一」,但我不想失去'可空性'。
作爲解決方法,我現在使用var en = (Digits?) (int?) obj;
,它的工作原理雖然我不確定這種解決方案的完全正確性。
但我不知道爲什麼在第一種情況下拋出可空枚舉失敗?
我預計,鑄造可空類型的動作如下:
- 轉換成非可空類型,如果成功,則轉換爲可空類型
- 如果null
傳遞那麼結果將是null
以及
但這似乎是不正確的。
又見HTTP:/ /stackoverflow.com/questions/5199419/c-sharp-cast-object-of-type-int-to-nullable-enum – simonalexander2005