Questions
(복수) 라는 수업이 있습니다 . 이 클래스에는 Question
(단일) 이라는 열거 형 이 있습니다.
public enum Question
{
Role = 2,
ProjectFunding = 3,
TotalEmployee = 4,
NumberOfServers = 5,
TopBusinessConcern = 6
}
Questions
클래스 에는 해당 객체를 get(int foo)
반환하는 함수 Questions
가 foo
있습니다. 열거 형에서 정수 값을 얻는 쉬운 방법이 Questions.Get(Question.Role)
있습니까? 그래서 이런 식으로 할 수 있습니까?
답변
열거 형을 캐스팅하십시오.
int something = (int) Question.Role;
위의 열거 형의 기본 기본 유형은이므로 야생에서 볼 수있는 대다수의 열거 형에서 작동합니다 int
.
그러나 cecilphillip이 지적했듯이 열거 형은 다른 기본 유형을 가질 수 있습니다. 열거가 선언 된 경우 uint
, long
또는 ulong
, 그것은 열거의 형식으로 캐스팅해야한다; 예를 들어
enum StarsInMilkyWay:long {Sun = 1, V645Centauri = 2 .. Wolf424B = 2147483649};
당신은 사용해야합니다
long something = (long)StarsInMilkyWay.Wolf424B;
답변
모든 열거 형 일체형이 될 수 있기 때문에 ( byte
, int
, short
등), 열거의 기본 적분 값을 얻을 수있는 더 강력한 방법이 사용하게 될 GetTypeCode
와 함께 방법 Convert
분류 :
enum Sides {
Left, Right, Top, Bottom
}
Sides side = Sides.Bottom;
object val = Convert.ChangeType(side, side.GetTypeCode());
Console.WriteLine(val);
기본 정수 유형에 관계없이 작동해야합니다.
답변
공용 상수를 갖는 정적 클래스로 선언하십시오.
public static class Question
{
public const int Role = 2;
public const int ProjectFunding = 3;
public const int TotalEmployee = 4;
public const int NumberOfServers = 5;
public const int TopBusinessConcern = 6;
}
그런 다음로 참조 할 수 Question.Role
있으며 항상 int
정의한대로 평가합니다 .
답변
Question question = Question.Role;
int value = (int) question;
결과입니다 value == 2
.
답변
관련 메모에서에서 int
값 을 얻으려면 여기에 System.Enum
제공 e
하십시오.
Enum e = Question.Role;
당신이 사용할 수있는:
int i = Convert.ToInt32(e);
int i = (int)(object)e;
int i = (int)Enum.Parse(e.GetType(), e.ToString());
int i = (int)Enum.ToObject(e.GetType(), e);
마지막 두 가지는 추악합니다. 나는 첫 번째를 선호합니다.
답변
생각보다 쉽습니다. 열거 형은 이미 정수입니다. 그냥 상기 시켜줘야합니다.
int y = (int)Question.Role;
Console.WriteLine(y); // Prints 2
답변
예:
public Enum EmpNo
{
Raj = 1,
Rahul,
Priyanka
}
그리고 코드 뒤에서 열거 형 값을 얻으십시오.
int setempNo = (int)EmpNo.Raj; // This will give setempNo = 1
또는
int setempNo = (int)EmpNo.Rahul; // This will give setempNo = 2
열거 형이 1 씩 증가하고 시작 값을 설정할 수 있습니다. 시작 값을 설정하지 않으면 처음에 0으로 할당됩니다.
