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.