이번 포스팅에서는 Enum의 몇 가지 간단한 메소드와 Enum을 활용한 DataTable에서의 Status 플래그 관리 기법에 대해 설명합니다.
1. Enum과 메소드
[소스코드]public enum Colors { Red = 0, Yellow, Green, Blue } static void Main(string[] args) { var color = (Colors)Enum.Parse(typeof(Colors), "Red"); var colorIdx = (int)Colors.Red; var colorNames = Enum.GetNames(typeof(Colors)); }
[문법]
1) String값에 맞는 Enum 명 가져오기 (ex : color)
("Enum명")Enum.Parse(typeof("Enum명"), "Enum인자");
2) Enum Int 타입 반환 (ex : colorIdx)
(int)("Enum명").("인자");
3) Enum 구성인자 이름 가져오기
Enum.GetNames (typeof("Enum명")); (Enum.GetName으로 잘못쓰지 않도록 주의)
[결과]
2. 사용 예제
: DataTable에 Status Column을 추가하고, 상태값이 "Complete"인 Row의 이름을 출력하는 예제[소스코드]
class Program { public enum Status { Complete = 0, Error, Cancle, Wait, Running } static void Main(string[] args) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("STATUS")); dt.Columns.Add(new DataColumn("NAME")); DataRow dr01 = dt.NewRow(); dr01["STATUS"] = "Wait"; dr01["NAME"] = "Alpha"; DataRow dr02 = dt.NewRow(); dr02["STATUS"] = "Complete"; dr02["NAME"] = "Beta"; DataRow dr03 = dt.NewRow(); dr03["STATUS"] = "Running"; dr03["NAME"] = "Gamma"; DataRow dr04 = dt.NewRow(); dr04["STATUS"] = "Error"; dr04["NAME"] = "Delta"; dt.Rows.Add(dr01); dt.Rows.Add(dr02); dt.Rows.Add(dr03); dt.Rows.Add(dr04); for(int idx = 0; idx < dt.Rows.Count; idx++) { var status = (Status)Enum.Parse(typeof(Status), dt.Rows[idx]["STATUS"].ToString()); if(status == Status.Complete) Console.WriteLine(string.Format("Complete Object Name : {0}", dt.Rows[idx]["NAME"].ToString())); } Console.ReadLine(); } }
[생성 테이블]
[결과]
0 댓글