C#

[class] C# - enums (이넘) - 상수 열거형 클래스

12,071

목차

  1. enum 정의
  2. enum과 class와의 유사점/차이점
  3. enum values (값)
  4. enum 예제1 - Class 안의 enum
  5. enum 예제2 - Switch 구문 안의 enum
  6. 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



분류 제목
class C# - OOP (객체 지향 프로그래밍)
class C# - Class (클래스) / Object (객체)
class C# - Class Members (클래스 멤버) - 속성(=필드), 메서드
class C# - Constructors (생성자)
class C# - Access Modifiers (접근 수정자)
class C# - Encapsulation (캡슐화) ※ Getter (게터) / Setter (세터)
class C# - Inheritance (상속)
class C# - Polymorphism (다형성)
class C# - Abstraction (추상화)
class C# - interface (인터페이스) ★
class C# - enums (이넘) - 상수 열거형 클래스
class C# - Files (파일) - 파일생성/파일읽기/파일쓰기
class C# - Exceptions (= Try...Catch..) - 에러 제어
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 2
웹유틸
회원센터
홈짱닷컴 PC버전 로그인