NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    C# 6. Enum 형식

    페이지 정보

    본문

    지금까지 Built-in type에 대해서만 하다가 처음으로 User-define type에 대해 알아보는 시간입니다. CTS(Common type system, 공용 형식 시스템)는 .NET(닷넷)에서 제공하는 약 20여가지 언어들이 같은 데이타 형식을 사용하게 함으로써,  IDE(Integrated Development Environment, 통합 개발 환경)인 Visual Studio의 CLR(Common Language Runtime, 공통 언어 런타임)에서 컴파일 할 수 있는 강력한 기술 입니다. 오늘 알아볼 Enum은 Value type의 한 종류인 User-define type으로 Boolean과 같다고 보시면 됩니다. 다만, Boolean은 Built-in type으로, true, false값이 정의되어 있습니다.

    lHCFMoe.png

     

    한가지 더 짚고 넘어가면 .NET의 모든 형식은 객체(또는 개체, 이건 의미를 해석하기 나름이라^^)입니다. 이유는 System.Object로부터 파생되기 때문입니다. 이 부분은 나중에 좀 더 자세하게 설명할 기회가 있을거 같습니다. 아래 예제를 보시면서 Built-in type에서 유일하게 비슷한 Boolean과 비교해 보시면 좋겠습니다.

    라인 10에서 enum을 선언하고 할당하고 있습니다.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            public enum DialogResult { YES, NO, CANCEL, CONFIRM, OK }
            static void Main(string[] args)
            {
                Console.WriteLine((int)DialogResult.YES);
                Console.WriteLine((int)DialogResult.NO);
                Console.WriteLine((int)DialogResult.CANCEL);
                Console.WriteLine((int)DialogResult.CONFIRM);
                Console.WriteLine((int)DialogResult.OK);
                Console.ReadLine();
            }
        }
    }

     

     

    실행해 보면 아래와 같이 출력됩니다.

    DNsAf9H.png

     

     

    내부적으로 0부터 순차적으로 할당되기 때문에 위와 같은 결과를 얻을 수 있습니다.

    이제 코드를 아래와 같이 수정한 후 결과를 확인해 봅시다.

            public enum DialogResult { YES = 10, NO = 20, CANCEL = 30, CONFIRM, OK }

     

    결과는 아래와 같습니다. 이렇게 사용자가 정의할 수 있는 값 형식입니다.

    hRQWhEO.png

     

     

    사실 DialogResult는 WinForm으로 가면 이미 구현되어 있는 enum입니다. 이것도 확인해 보도록 하겠습니다.

    우선, System.Windows.Forms 라이브러리를 참조 추가시킵니다.

    irWOBVl.png

     

     

    System.Windows.Forms를 추가한 후 아래와 같이 코딩해 보면 인텔리센스에 enum으로 정의된 내용을 확인할 수 있습니다.

    US2fQoQ.png

     

     

    MS에서 구현한 어셈블리를 리플렉션 해보면 아래와 같이 enum으로 구현되어 있는 것을 확인할 수 있습니다.

    #region 어셈블리 System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Windows.Forms.dll
    #endregion
     
    using System.Runtime.InteropServices;
     
    namespace System.Windows.Forms
    {
        //
        // 요약:
        //     대화 상자의 반환 값을 나타내는 식별자를 지정 합니다.
        [ComVisible(true)]
        public enum DialogResult
        {
            //
            // 요약:
            //     Nothing 대화 상자에서 반환 됩니다. 즉, 모달 대화 상자 실행을 계속 합니다.
            None = 0,
            //
            // 요약:
            //     대화 상자의 반환 값은 OK (일반적으로 확인 레이블이 붙은 단추에서 보냄).
            OK = 1,
            //
            // 요약:
            //     대화 상자의 반환 값은 Cancel (일반적으로 Cancel 레이블이 붙은 단추에서 보냄).
            Cancel = 2,
            //
            // 요약:
            //     대화 상자의 반환 값은 Abort (일반적으로 중단 레이블이 붙은 단추에서 보냄).
            Abort = 3,
            //
            // 요약:
            //     대화 상자의 반환 값은 Retry (일반적으로 재시도 레이블이 붙은 단추에서 보냄).
            Retry = 4,
            //
            // 요약:
            //     대화 상자의 반환 값은 Ignore (일반적으로 무시 레이블이 붙은 단추에서 보냄).
            Ignore = 5,
            //
            // 요약:
            //     대화 상자의 반환 값은 Yes (일반적으로 예 레이블이 붙은 단추에서 보냄).
            Yes = 6,
            //
            // 요약:
            //     대화 상자의 반환 값은 No (일반적으로 아니요 레이블이 붙은 단추에서 보냄).
            No = 7
        }
    }

     

     

    몇가지 더 소개할만한 내용이 있지만, COM과 InteropService에 대해서 설명하기에는 너무 앞서나가는 면이 있기에 다음에 하기로 하고 오늘은 이만 줄여야 할거 같습니다.

     

    다음 시간에...

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.