2011-06-29 90 views
1

我需要讓我的枚舉值,所以我用下面的命令:如何從C#中的簡單數組中獲取元素?

Array a = Enum.GetValues(typeof(Typ)); 

然而,典型的表達 一個[X] 不起作用,爲什麼呢?

感謝

+5

什麼是 「不工作」?此外,爲什麼您可以通過任意索引來訪問特定元素,而不是使用每個枚舉值的名稱? – BoltClock

+1

我不能採取像字符串= a [1] elmement。只是[]符號不起作用 – Mirial

+0

是的,但什麼是「不起作用」?它怎麼不起作用?它給了什麼錯誤? – BoltClock

回答

-1

基於有機磷農藥的意見,他可能不會實際上是感興趣的Enum,但不是在。這種區別很容易讓初學者感到困惑。 提示:當您提出涉及錯誤的問題時(即「不起作用,爲什麼?」),那麼包含錯誤信息通常會有所幫助。

如果您正在尋找在Enum名稱,請嘗試:

string[] names = Enum.GetNames(typeof(Typ)); 
4

嗯,因爲Enum.GetValues是不通用的。

如果你寫:

var a = Enum.GetValues(typeof(Typ)); 
Console.WriteLine(a.GetType()); 

你會得到: 「Namespace.Typ []」。但是由於方法不是通用的,因此編譯器不能根據提供的類型更改返回類型,所以方法返回System.Array,它是數組的基本類型,並且必須使用類型轉換將其向下轉換爲預期類型,例如:

Typ[] a = (Typ[])Enum.GetValues(typeof(Typ)); 
0

我已經使用下面的代碼來處理轉換數據庫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()); 
    } 
2

正確的方法在我看來,這樣做是:

Array a = Enum.GetValues(typeof(Typ)); 

,然後在通過位置檢索要素:

a.GetValue(elementsIndex); 
相關問題