목차
- enum 정의
- enum과 class와의 유사점/차이점
- enum values (값)
- enum 예제1 - Class 안의 enum
- enum 예제2 - Switch 구문 안의 enum
- enum 예제3 - enum 이용한 반복문
enum 정의
상수를 콤마( , )로 모아놓은 열거형 "클래스".
※ 변경 불가한 읽기 전용 깂 (예: 날짜, 색깔 등) 모아 관리 시 유용.
※ 특히, int, bytes 등 정수형 상수 정의 시 유용.
[특징]
1. enum : enumerations (= 구체적으로 나열) 의미.
2. const 키워드로 정의하는 상수처럼 변경 불가.
3. Class와 유사점・차이점 있음. (아래에서 설명.)
4. 각 상수에 대해서 개별 속성값 지정도 가능.
5. 다른 Class 안에서 사용 가능. (예제1)
6. Switch 구문 안에서도 사용 가능. (예제2)
6. 반복문에서도 사용 가능. (예제3)
[예제] Program.cs
using System;
namespace Homzzang
{
enum Code
{
HTML,
CSS,
JS
}
class Program
{
static void Main(string[] args)
{
Code myCode = Code.CSS;
Console.WriteLine(myCode);
}
}
}
결과값: CSS
enum과 class와의 유사점/차이점
[Class와 유사점]
(속성・메서드・생성자) 보유 가능.
[Class와 차이점]
1.
enum 상수들은 public, static, const 성격 띔.
즉, 변경 불가. = 덮어쓰기 불가. = 재정의 불가.
2.
enum은 객체 생성 불가.
enum values (값)
1.
enum 안 각 요소는 0부터 정수 색인 배정.
2.
enum 안 요소에서 정수 얻으려면,
명시적으로 int 자료형으로 변환해야 함. (예제1)
3.
enum 안 특정 요소에 사용자 정의 정수 배정 가능하며,
그에 따라 그 이후 요소 색인은 자동 업그레이드 됨. (예제2)
[예제1]
using System;
namespace Homzzang
{
class Program
{
enum Months
{
Jan, // 0
Feb, // 1
Mar, // 2
Apr, // 3
May, // 4
Jun, // 5
Jul // 6
}
static void Main(string[] args)
{
int num = (int) Months.Feb;
Console.WriteLine(num);
}
}
}
[예제2] 사용자 정의 정수 배정 가능하며, 그 이후는 자동 증가.
using System;
namespace Homzzang
{
class Program
{
enum Months
{
Jan, // 0
Feb=2, // 2
Mar, // 3
Apr, // 4
May, // 5
Jun, // 6
Jul // 7
}
static void Main(string[] args)
{
int num = (int) Months.May;
Console.WriteLine(num);
}
}
}
결과값: 5
enum 예제1 - Class 안의 enum
enum은 다른 클래스 안에서도 사용 가능.
[예제] Program.cs
using System;
namespace Homzzang
{
class Program
{
enum Code
{
HTML,
CSS,
JS
}
static void Main(string[] args)
{
Code myCode = Code.CSS;
Console.WriteLine(myCode);
}
}
}
결과값: CSS
enum 예제2 - Switch 구문 안의 enum
enum은 switch 구문 안에서도 사용 가능.
※ 상응하는 값을 찾기 위해 자주 사용됨.
[예제] Program.css
using System;
namespace Homzzang
{
class Program
{
enum Code
{
HTML,
CSS,
JS
}
static void Main(string[] args)
{
Code myCode = Code.CSS;
switch(myCode)
{
case Code.HTML:
Console.WriteLine("HTML : 뼈대");
break;
case Code.CSS:
Console.WriteLine("CSS : 디자인");
break;
case Code.JS:
Console.WriteLine("JS : 기능");
break;
}
}
}
}
결과값:
CSS : 디자인
enum 예제3 - enum 이용한 반복문
foreach (... in ...) 반복문 이용해 접근 가능.
Enum.GetValues() 메서드는 enum 안 각 상수에 접근.
※ 반복문 돌릴 때 아주 유용.
[구문]
foreach (enum var in Enum.GetValues(typeof(enum)))
var 출력.
}
PS.
※ enum : enum명.
※ var : 변수명. (※ enum 안의 각 상수를 담는 변수)
[예제] Program.cs
using System;
namespace Homzzang
{
class Program
{
enum Code
{
HTML,
CSS,
JS
}
static void Main(string[] args)
{
foreach (Code i in Enum.GetValues(typeof(Code)))
{
Console.WriteLine(i);
}
}
}
}
결과값:
HTML
CSS
JS
최신댓글