ジェネリック【C#】

ジェネリックはオブジェクト指向型言語のポリモーフィズムを実現させるための仕組みの一つです。ここでは、C#のジェネリックについて解説します。

ジェネリックとは

C#におけるジェネリックは特定の型(クラス)に依存しないクラスやメソッドを記述するための仕組みです。クラスやメソッドで仮の型名(型パラメータ)を用いて宣言することで、型をパラメータとして渡すことができ、コンパイル時に特定の型に対応付けることが可能となります。

ジェネリッククラス

ジェネリッククラスはクラス内部で用いる型を型パラメータとして、クラスのインスタンス化の際に指定することのできるクラスです。

ジェネリッククラスの定義

基本書式

class クラス名<型パラメータ> where 型パラメータ:制約条件
{
    型パラメータ フィールド名;
    型パラメータ メソッド名 ( 型パラメータ 引数 ) { }
}

クラスを定義する際は、型パラメータをTとして定義しておき、クラスをインスタンス化する際にTに特定の型を指定します。クラスの内部の定義自体は通常の型名の代わりに型パラメータを用いるだけで、それ以外は通常のクラスと変わりありません。なお、型パラメータは任意の文字列でも間違いではありませんが、Microsoftのガイドラインで型パラメータをTとすることが推奨されています。

型パラメータはカンマで区切って複数指定することも可能です。また、型パラメータに指定可能な型は、以下のように制約条件を設けて限定することが可能です。

制約条件の指定方法許される型
where T:クラス名クラス、その派生クラス
where T:インターフェース名インターフェース、その派生インターフェース
where T:new()引数なしのコンストラクタを持つクラス
where T:class参照型
where T:struct値型

ジェネリッククラスからのインスタンスの生成

基本書式

ジェネリッククラス名<型名>  x = new ジェネリッククラス名<型名> ();

ジェネリッククラスを使う場合は、通常のクラスでは クラス名 と書くところを、ジェネリッククラス名<型名> と置き換える必要があります。

ジェネリックメソッド

ジェネリックメソッドの定義

ジェネリックメソッドは引数と戻り値の型を型パラメータとして指定可能なメソッドです。

基本書式

型パラメータ メソッド名<型パラメータ>(型パラメータ 引数) where 型パラメータ:制約条件
{
	メソッド定義
}

関連記事・スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です