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값이 정의되어 있습니다.
한가지 더 짚고 넘어가면 .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();
}
}
}
실행해 보면 아래와 같이 출력됩니다.
내부적으로 0부터 순차적으로 할당되기 때문에 위와 같은 결과를 얻을 수 있습니다.
이제 코드를 아래와 같이 수정한 후 결과를 확인해 봅시다.
public enum DialogResult { YES = 10, NO = 20, CANCEL = 30, CONFIRM, OK }
결과는 아래와 같습니다. 이렇게 사용자가 정의할 수 있는 값 형식입니다.
사실 DialogResult는 WinForm으로 가면 이미 구현되어 있는 enum입니다. 이것도 확인해 보도록 하겠습니다.
우선, System.Windows.Forms 라이브러리를 참조 추가시킵니다.
System.Windows.Forms를 추가한 후 아래와 같이 코딩해 보면 인텔리센스에 enum으로 정의된 내용을 확인할 수 있습니다.
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에 대해서 설명하기에는 너무 앞서나가는 면이 있기에 다음에 하기로 하고 오늘은 이만 줄여야 할거 같습니다.
다음 시간에...
- 이전글7. Struct 형식 20.08.09
- 다음글5. Float, double, decimal 형식 20.08.09
댓글목록
등록된 댓글이 없습니다.