Repository navigation
JA CSharp Generics
Codex edited this page Oct 11, 2026
·
2 revisions
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ジェネリック型またはメソッドは、T などの型パラメーターを受け取ります。コンパイラは、これらの型への呼び出しをチェックします。制約 where は、基本タイプ、インターフェース、class、struct、notnull、unmanaged、またはアクセス可能なコンストラクター new() など、必要なプロパティを記述します。
この例を 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。
ClassicUO — Bad Newbie & C# Scripts IDE