我需要讓我的枚舉值,所以我用下面的命令:如何從C#中的簡單數組中獲取元素?
Array a = Enum.GetValues(typeof(Typ));
然而,典型的表達 一個[X] 不起作用,爲什麼呢?
感謝
我需要讓我的枚舉值,所以我用下面的命令:如何從C#中的簡單數組中獲取元素?
Array a = Enum.GetValues(typeof(Typ));
然而,典型的表達 一個[X] 不起作用,爲什麼呢?
感謝
基於有機磷農藥的意見,他可能不會實際上是感興趣的值Enum
的,但不是在名。這種區別很容易讓初學者感到困惑。 提示:當您提出涉及錯誤的問題時(即「不起作用,爲什麼?」),那麼包含錯誤信息通常會有所幫助。
如果您正在尋找在Enum
名稱,請嘗試:
string[] names = Enum.GetNames(typeof(Typ));
嗯,因爲Enum.GetValues
是不通用的。
如果你寫:
var a = Enum.GetValues(typeof(Typ));
Console.WriteLine(a.GetType());
你會得到: 「Namespace.Typ []」。但是由於方法不是通用的,因此編譯器不能根據提供的類型更改返回類型,所以方法返回System.Array
,它是數組的基本類型,並且必須使用類型轉換將其向下轉換爲預期類型,例如:
Typ[] a = (Typ[])Enum.GetValues(typeof(Typ));
我已經使用下面的代碼來處理轉換數據庫SP參數的自定義類時的emums,一直工作。
public static object ParamValue<T>(Enum value)
{
if (value == null)
return System.DBNull.Value;
else
return (T)Enum.Parse(value.GetType(), value.ToString());
}
正確的方法在我看來,這樣做是:
Array a = Enum.GetValues(typeof(Typ));
,然後在通過位置檢索要素:
a.GetValue(elementsIndex);
什麼是 「不工作」?此外,爲什麼您可以通過任意索引來訪問特定元素,而不是使用每個枚舉值的名稱? – BoltClock
我不能採取像字符串= a [1] elmement。只是[]符號不起作用 – Mirial
是的,但什麼是「不起作用」?它怎麼不起作用?它給了什麼錯誤? – BoltClock