2017-11-10 17 views
-1
namespace ChemicalTest 
{ 

    enum Echemicals { oxygen, hydrogen, carbon } 

    public class Chemicals 
    { 
     int[] chemicals = new int[3]; 

     public Chemicals() 
     { 
      foreach (int i in chemicals) 
      { 
       int[i] = //How can I reference each enumeration here? 
         //For example (pseudocode) - (i)Echemicals 
      } 
     } 
    } 
} 

I三のenum値を有する:酸素{0}は、水素、{1}、炭素{2}特定の列挙を整数で参照するにはどうすればよいですか?

I、後で自分の番号で参照される配列にこれらの列挙のそれぞれを入れたいと私は配列からそれらを呼び出すことができました。

(int)Echemicals.hydrogenを使用して2番目の列挙体{1}のデフォルト値を返すことができますが、これを逆に行う方法はわかりません。

化学物質の名前のそれぞれを、整数値で呼び出すことによって配列に格納しようとしています。

+0

私は、あなたがしようとしていることの目的について非常に混乱しています。しかし、あなたの質問に答えるためには、 '(Echemicals)1'が' Echemicals.hydrogen'を与えるような列挙型にintをキャストするだけです。 – itsme86

+1

実際の要件は何ですか?私はあなたが混乱していると思って、私たちも混乱させようとします –

答えて

0

あなたは自分のenumにキャストする必要があります。

しかし、これにはint[]を使用する必要はありません。たぶんあなたはその問題の詳細についてもっと詳しく述べるべきでしょう。

0

デフォルトでは、.NETの列挙型の値には、ゼロから始まる宣言の順番で整数値が割り当てられます。したがって、この列挙...

enum Echemicals { oxygen, hydrogen, carbon } 

int zero = (int)Echemicals.oxygen; 
int one = (int)Echemicals.hydrogen; 
int two = (int)Echemicals.carbon; 

そしてその逆で:

Echemicals oxy = = (Echemicals)0; 

しかしchemicalsは、整数の配列ではなく、Echemicalsです。他のいくつかの時点で、あなたはその整数値に対応するEchemicals値にint[2]を変換したい場合は、

int[i] = i; 

Echemicals chem = (Echemicals)int[2]; 

しかし、あなたはすべての配列をしたい場合:だからそれはあなたがこれをしたいように聞こえますEchemicals列挙値、これは動作します - それは、整数の配列よりも有用だろう:

var echemValues = (Echemicals[])Enum.GetValues(typeof(Echemicals)); 

Echemicals oxy = echemValues[0]; 

int thisWillBeZero = (int)echemValues[0]; 

また、INTEGを割り当てることができます

enum Echemicals { oxygen = 8, hydrogen = 1, carbon = 6 } 
0

私が最初にすべての列挙型を取得し、整数にそれらをキャストするよりも、あなたはそれを他の方法で回避を行う場合には、それが簡単であると信じて:あなたが列挙型を定義する際に値を明示的にER

var enumValues = Enum.GetValues(typeof(Echemicals)); 
var decimals = enumValues.OfType<Echemicals>().Select(x => (int)x).ToArray(); 
0

あなたはこのような何かを行うことができます。

enum Echemicals { 
    oxygen = 1, 
    hydrogen = 2, 
    carbon = 3 
} 
// ... 
int oxigenInt = (int) Echemicals.oxygen; 
Echemicals oxigenEnum = (Echemicals) 1; 

は、別の方法としては、Immutable Object Designを使用することができます

インデックスだけでなくその要素にさらにプロパティが必要な場合は、もっと便利ですが、便利です。