Enum 은 열거형으로 아룸있는 상수들의 집합을 정의하 데 사용되는 데이터 형식입낟

 

 

Enum

enum 열거_형식명 {상수1 =1, 상수2 =2, 상수3 =3, ...)

 

다음은 간단한 Enum 을 선언하고 해당 값들을 출력하는 코드입니다.

using System;

namespace Enum {
    class MainApp
    {
        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);
        }
    }
}
0
1
2
3
4
  • Enum 은 특정 값을 지정하지 않으면 Int 에서는 0부터 값을 시작하게 됩니다.
enum DialogResult {YES = 50, NO, CANCEL = 100, CONFIRM, OK = 200}
/*
50
51
100
101
200
*/
  • 위와 같이 값을 지정하게 된다면 해당 값을 기준으로 값이 수정되기 때문에 50부터 값이 시작하는 것을 확인할 수 있습니다.

 

Nullable 형식

C# 컴파일러는 Swift 처럼 메모리 공간에는 반드시 어떤 값이든 넣도록 강제합니다.

특정 변수에 빈값으로 초기화하여 생성하기 위해서는 다음과 같이 만들어야 합니다.

int? a = null;
float? b = null;
double? c = null;

 

모든 Nullable 형식은 값이 존재하는지 아닌지 확인할 수 있는 HasValue 와 Value 두 가지 속성을 갖고 있습니다.

static void Main(string[] args) {
    int? a = null;

    Console.WriteLine(a.HasValue);

    a = 37;
    Console.WriteLine(a.HasValue);
    Console.WriteLine(a.Value);
}
/*
False
True
37
*/

 

var

swift 에서도 존재하듯이 var 또한 사용될 수 있습니다.

C# 에서 var 키워드를 사용하면 약한 형식 검사를 하는 언어의 편리함을 지원합니다.

var 를 사용하여 변수를 선언하려면 반드시 선언과 동시에 초기화해줘야 합니다. (데이터 형식을 추론해야 하기 때문)

using System;

namespace Enum {
    class MainApp
    {
        enum DialogResult {YES = 50, NO, CANCEL = 100, CONFIRM, OK = 200}
        
        static void Main(string[] args) {
            var a = 20;
            Console.WriteLine("Type: {0}, Value: {1}", a.GetType(), a);

            var b = 3.1414213;
            Console.WriteLine("Type: {0}, Value: {1}", b.GetType(), b);

            var c = "Hello, World!";
            Console.WriteLine("Type: {0}, Value: {1}", c.GetType(), c);

            var d = new int[] {10, 20, 30};
            Console.Write("Type: {0}, Value: ", d.GetType());
            foreach (var e in d)
                Console.Write("{0} ", e);
            
            Console.WriteLine();
        }
    }
}

 

ytw_developer