ジェネリック (Generic)

ジェネリックとはアルゴリズムの再利用を可能とする機能で、C++のテンプレートに代わるものです。C++ テンプレートと C# ジェネリックの違い | MSDN

ジェネリックはおもにコレクションで利用されています。

ジェネリックの利点

  • 型の安全性 (タイプセーフティ)
  • コードの記述の簡易化
  • パフォーマンスの向上
  • ソースコードの保護

ジェネリック クラス

class MyClass <T>
{
}
ジェネリック クラス - C# プログラミング ガイド | Microsoft Docs

ジェネリック メソッド

void Method<T>(T val)
{
}
ジェネリック メソッド - C# プログラミング ガイド | Microsoft Docs

ジェネリック修飾子 (Generic Modifier)

共変性と反変性 (C#) | Microsoft Docs

in

型パラメータが反変 (contravariance) であることを示し、指定の型よりも弱い派生型を使用できるようになります。in (ジェネリック修飾子) - C# リファレンス | Microsoft Docs

interface Sample<in A> {}

out

型パラメータが共変 (covariance) であることを示し、指定の型よりも強い派生型を使用できるようになります。out キーワード (ジェネリック修飾子) - C# リファレンス | Microsoft Docs

interface Sample<out A> {}

参考

参考書

MSDN (Microsoft Developer Network) から検索