2017-11-10 6 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을 사용하여 두 번째 열거 형 {1}의 기본값을 반환 할 수 있지만이를 역순으로 수행하는 방법을 알지 못합니다.

각 화학 물질의 이름을 정수 값으로 호출하여 배열에 저장하려고합니다.

+0

나는 당신이하려는 일의 목적에 대해 매우 혼란스러워합니다. 그러나 질문에 답하기 위해 int를 enum 형식으로 캐스팅합니다.'(Echemicals) 1'은'Echemicals.hydrogen'을 줄 것입니다. – itsme86

+1

실제 요구 사항은 무엇입니까?나는 네가 혼란스럽고 우리를 혼란스럽게 만들려고 노력한다고 생각한다. –

답변

0

당신은 당신의 enum으로 캐스팅해야합니다

Echemicals val = (Echemicals)i;

하지만이 경우 int[]을 사용할 필요가 없습니다. 어쩌면 문제가 무엇인지에 대해 더 자세히 설명해야합니다.

0

기본적으로 .NET의 enum 값에는 0부터 시작하는 선언 순서로 정수 값이 할당됩니다. 따라서,이 열거 ...

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입니다. 그래서 당신이 원하는 같은 소리 :

int[i] = i; 

Echemicals chem = (Echemicals)int[2]; 

, 그 정수 값에 대응하는 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

난 당신이 먼저 열거를 얻을 캐스트보다 그들 정수로, 주위에 그것을 다른 방법으로 할 경우 쉽게 믿고 :

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

당신 ER 값은 명시 적으로는 열거 형을 정의 할 때 이 같은 작업을 수행 할 수 있습니다

:

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

은 또한 당신은 Immutable Object Design을 사용할 수 있습니다

더 많은 작업이 필요하지만 인덱스 이외의 요소에서 더 많은 속성이 필요한 경우 유용합니다.