Enum 사용법 | 최상위문 | Null 병합 연산

JWJ·2025년 12월 27일

C#

목록 보기
1/1

Enum 사용법

class Program
{
    static void Main(String[] args)
    {
        Days restDay = Days.Monday;

        if (restDay == Days.Sunday)
        {
            Console.WriteLine("일요일 입니당");
        }
        else
        {
            Console.WriteLine("일요일 아님");
        }
        Console.ReadKey();
    }
}

enum Days
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}

최상위문

C# 에서 최상위문이란 Main 을 생략해도 자동으로 만들어준다는 뜻이다.

Main 문은 아래 예제와 같이 Class 내부에 위치한다.

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(args.Length);
    }
}

그런데 아래의 예제 코드가 위의 코드와 완벽하게 동일하다.

Console.WriteLine(args.Length);

그 이유는 컴파일러가 자동으로 Main 문을 만들어주기 때문이다. 이러한 C# 의 문법을 최상위문이라고 부르며, 실무에서는 사용하지는 않을 것 같다. 단순히 테스트 용도 정도로는 유용하게 사용되지 않을까?


Null 병합 연산

C# 에서는 int a = null 코드가 에러가 난다. 왜냐하면 int 값에 null 을 허용하지 않기 때문이다. 그렇기 때문에 null 값을 int 에 받고 싶다면 아래와 같이 코드를 작성한다.

//모두 같은 의미임
Nullable<int> a = null;
int? a = null; 

개발을 할 때 의미가 중요하기 때문에 Nullable<int> a = null 방식으로 작성하는 것이 더욱 명시적이라서 해당 방식을 많이 활용할 것 같다.

해당 Nullable 객체는 아래와 같이 정의되어 있다. 아직 모든 메서드를 잘 알지는 못하지만 적어도 HasValue 메서드는 자주 사용할 것 같다.

public Nullable(T value)
{
	public readonly bool HasValue { get; } 
    public readonly T HasValue { get; }
    public override bool Equals(object? other);
    public override int GetHashCode();
    public readonly T GetValueOrDefault();
    ...
}

마지막으로 Nullable 객체를 활용하여 Null 병합 연산 은 다음과 같다.

int? a = null; 
int? b = null;

// b가 null이면 a에 3을 대입해라. b가 null이 아니면 b값을 a에 대입
a = b ?? 3; 

Console.WriteLine("a: " + a); // 3
Console.WriteLine("b: " + b); // null

int? a = null; 
int? b = 3;

a ??= b;  //a가 null이면 b 값을 할당해라

Console.WriteLine("a: " + a); //3
Console.WriteLine("b: " + b); //3
profile
인사이트를 얻고 정리하는 공간입니다

0개의 댓글