我怎樣才能從包含一個枚舉類型的數組的對象類型變量轉換爲枚舉[]?換句話說:給定一個對象,這是一個枚舉值的數組,我怎麼能不知道枚舉類型得到一個枚舉[]
// Somewhere in the code we have: public enum MyEnum {This,That};
// Somewhere else in the code we have: public enum TheirEnum {What,Ever};
// In other parts of the code we have additional enum types
// Now, given:
object enumArrayOfSomeType=...; // Maybe it's of type MyEnum[] or TheirEnum[] or
// SomeOtherEnum[]
// I want to say
Enum[] someEnumArray=enumArrayOfSomeType as Enum[];
不幸的是,所呈現的代碼總是在某些EnumArray中導致null值。
有沒有辦法做到這一點?
更新:
我猜我期待陣列協方差踢,但也許我的期望太高了(即數組協變狂野)。
此外,由於克里斯辛克萊在評論中指出接受的答案,即數組協方差適用於只有引用類型,其中最引用的類型肯定不是。 (見:.NET Array Covariance rules in MSDN。)
所以,你真的想在最後輸入「Enum」,或者你想嘗試弄清楚枚舉類型是什麼? – Chris
因爲我正在編寫一個函數,它可以從枚舉值中獲取屬性,而不管枚舉的類型(即一個非常通用的函數),我真的希望將某些東西的類型設置爲'Enum []'。 –