2011-06-29 12 views
1

私は私の列挙型の値を取得する必要があるので、私は、次のコマンドを使用しています:C#で単純な配列から要素を取得するには?

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

しかし、典型的な発現 [X] は、なぜ、動作しませんか? OPのコメントに基づいて

おかげ

+5

?また、なぜ各列挙型の名前の名前を使用するのではなく、任意のインデックスによって特定の要素にアクセスしますか? – BoltClock

+1

私はstring = 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

DB SPパラメータのカスタムクラスを変換するときにemumを処理するために、次のコードを使用しています。それを行うには、私の意見では

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); 
関連する問題