Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 제네릭 메서드에서 null을 반환하는 방법

제네릭(Generics)은 클래스의 필드, 메서드, 매개변수 등의 타입을 자리 표시자(placeholder)로 정의할 수 있게 해주는 기능입니다. 컴파일 시점에 이 자리 표시자들이 실제 구체적인 타입으로 대체되며, 제네릭은 꺾쇠 괄호 <>를 사용해 선언합니다.

컬렉션의 가장 큰 한계 중 하나는 효과적인 타입 검사가 불가능하다는 점입니다. C#의 모든 클래스는 object 기본 클래스를 상속하기 때문에, 컬렉션에는 어떤 타입의 객체든 자유롭게 담을 수 있습니다.

또한 일반 메서드와 달리 제네릭 메서드에서는 단순히 null을 반환할 수 없습니다. 아래 코드처럼 제네릭 메서드에서 null을 반환하려고 하면 컴파일 오류가 발생합니다.

using System;
namespace DemoApplication {
    class Program {
        public static void Main() {
            Add(5, 5);
        }
        public static T Add<T>(T parameter1, T parameter2) {
            return null;
        }
    }
}

이 문제를 해결하려면 default() 키워드를 사용해야 합니다. default(T)는 지정된 타입 T의 기본값을 반환합니다. 참조 타입이라면 null이, 값 타입(int, double 등)이라면 0과 같은 해당 타입의 초기값이 반환됩니다.

예제

using System;
namespace DemoApplication {
    class Program {
        public static void Main() {
            Add(5, 5);
            Console.ReadLine();
        }
        public static T Add<T>(T parameter1, T parameter2) {
            var defaultVal = default(T);
            Console.WriteLine(defaultVal);
            return defaultVal;
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

0

실행 결과에서 확인할 수 있듯이, int 타입의 기본값인 0이 정상적으로 반환됩니다. 이처럼 제네릭 메서드에서 null 또는 기본값을 반환해야 하는 상황에서는 default(T)를 활용하는 것이 올바른 방법입니다.