Generics를 사용하면 필드, 메서드, 매개변수 등의 유형에 대한 자리 표시자가 있는 클래스를 정의할 수 있습니다. Generics는 이러한 자리 표시자를 컴파일 타임에 특정 유형으로 대체합니다. 제네릭은 꺾쇠 괄호 <>를 사용하여 정의할 수 있습니다. 컬렉션의 주요 제한 사항은 효과적인 형식 검사가 없다는 것입니다. 즉, C# 프로그래밍 언어의 모든 클래스가 개체 기본 클래스에서 확장되기 때문에 모든 개체를 컬렉션에 넣을 수 있습니다.
또한 일반 메서드와 같이 제네릭 메서드에서 단순히 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; } } }
따라서 일반 메서드에서 null 또는 기본값을 반환하려면 default()를 사용할 수 있습니다. default(T)는 제공된 유형의 기본 개체를 반환합니다.
예시
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
여기서 우리는 정수 0의 기본값이 반환되는 것을 볼 수 있습니다.