4章ジェネリック型

 「3章 型」では、型の書き方と型に含まれる各種メンバについて説明しました。しかし、クラス、構造体、インターフェイス、メソッドにはまだ説明していないもう1つ別方向の次元が存在します。これらの型には、型パラメータを定義できます。型パラメータとは、コンパイル時に別の型で置き換えられることになるプレースホルダです。型パラメータを定義することにより、型を1つ書くだけで複数のバージョンの型を生成できます。このような型をジェネリック型と言います。例えば、クラスライブラリにはジェネリッククラスList<T>が定義されており、可変長の配列のような振る舞いをします。Tは型パラメータであり、ほとんどすべての型を引数として使うことができます。したがって、List<int>は整数のリスト、List<string>は文字列のリストといった具合になります。同様にジェネリックメソッドを書くこともできます。このメソッドは独自の型引数を持つことができ、そのメソッドを含む型がジェネリック型かどうかにかかわらず、ジェネリックメソッドを定義できます。

 ジェネリック型やジェネリックメソッドは、名前の後ろに必ず山括弧(<>)が付いているので、簡単に区別ができます。この山括弧の中には、カンマで区切られたパラメータや引数のリストが入ります。パラメータと引数の区別はメソッドの場合と同様です。メソッドの宣言時にはパラメータのリストを指定し、メソッドや型を呼び出すときにパラメータに対して引数を与えることになります。つまり、List<T>は1つの型パラメータTを定義し、List<int>はそのパラメータに対して型引数intを与えています*1

*1 ジェネリック型の名前は、慣例として「TのList」や「intのList」のように呼ばれます。 ...

Get プログラミングC# 第8版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.