Skip to content

KO CSharp Generics

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

제네릭 및 유형 제한

설명서 C# · 예시 UO

일반 유형 또는 메소드는 유형 매개변수(예: T)를 받습니다. 컴파일러는 이러한 유형에 대한 호출을 확인합니다. 제약 조건 where은 기본 유형, 인터페이스, class, struct, notnull, unmanaged 또는 액세스 가능한 생성자 new() 등 필수 속성을 설명합니다.

간단한 예제 (Example.cs)

이 예제를 Example.cs로 따로 저장하고 이 페이지의 다른 예제와 독립적으로 실행하세요.

Example.cs:

// PROJECT-EXAMPLE
T Echo<T>(T value) => value;
System.Console.WriteLine(Echo(7));
System.Console.WriteLine(Echo("ore"));

결과:

7
ore
T FirstOrFallback<T>(IReadOnlyList<T> values, T fallback)
{
    return values.Count > 0 ? values[0] : fallback;
}

int first = FirstOrFallback(new[] { 10, 20 }, 0);
UO.Print(first.ToString());
sealed class Store<T> where T : notnull
{
    private readonly HashSet<T> values = new();
    public bool Add(T value) => values.Add(value);
    public int Count => values.Count;
}

var store = new Store<string>();
store.Add("self");
UO.Print(store.Count.ToString());

일반 인터페이스 및 대리자의 경우 in 및 out는 반공분산과 공분산을 나타냅니다. 이는 in/out 메소드의 매개변수와는 다른 단어 사용입니다. 호환 가능한 참조 유형의 유효한 변환을 지정합니다.

공식 문서: 유형 일반 및 제약 조건 - Microsoft Learn.

Clone this wiki locally