public Enum WeekDays
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7
}
...
Public void Main()
{
// WeekDays라는 Enum에서 '3'이라는 값을 가진 항목의 이름을 반환
string DayName = Enum.GetName(typeof(WeekDays), 3); // ==> "Wednesday"가 반환됨.
// WeekDays라는 Enum에서 이름이 "Sunday"인 항목에 해당하는 숫자값 반환
string strName = "Sunday";
int DayOrdinal1 = (int)Enum.Parse(typeof(WeekDays), strName); // ==> 숫자 7이 반환됨.
// 만일 요일의 이름이 "Sunday"라는 것을 이미 알고 있다면, 다음과 같이 "Sunday"인 항목에 해당하는 숫자값 반환
int DayOrdianl2 = (int)WeekDays.Sunday; // ==> 숫자 7이 반환됨
}
using System.ComponentModel;
enum Services
{
[Description("System1")]
System1,
[Description("System2")]
System2
}
public static class EnumHelper
{
/// <summary>
/// Enum타입의 Description을 가져온다.
/// 정의되지 않았을 경우 enum의 String을 가져온다.
/// </summary>
/// <param name="en">Description을 가져올 Enum</param>
/// <returns>Description 또는 Enum.ToString()</returns>
public static string GetDescription(Enum en)
{
Type type = en.GetType();
MemberInfo[] memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
//해당 text 값을 배열로 추출해 옵니다.
object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs != null && attrs.Length > 0)
{
return ((DescriptionAttribute)attrs[0]).Description;
}
}
return en.ToString();
}
}
[Enum]C# Enum에서 Value / Name 가져오기
[C#] 열거형 Enum과 string,int 형변환 방법
상태가 하나가아니라 여러개라면 Flags Attribute를 사용하는게 좋다.
비트 플래그를 사용하기 때문에 일반적으로는 아래처럼 2의 제곱수로 적어준다.
[Flags]
public enum MachineState
{
None = 0,
Idle = 1, // 대기 상태
Inspecting = 2, // 검사 중
Error = 4, // 오류 발생
Paused = 8 // 일시 정지
}
// 사용 예시
MachineState state = MachineState.Inspecting | MachineState.Error;
// 특정 상태인지 확인
bool isInspecting = (state & MachineState.Inspecting) != 0; // true
bool hasError = (state & MachineState.Error) != 0; // true