★ジェネリックとは
・様々な型に対応できるようにパラメータとして与え、オブジェクトを定義できるようにした機能
◇ジェネリッククラス
特定のデータ型の引数の差異を一元化してコードを簡略化することが可能
ジェネリッククラスの記述方法
//型に依存していない場合
public class SampleJeneric<VAR>
{
public VAR Test(VAR a1){ return a1; }
}
//型に依存しているメソッドを呼び出す場合
public class SampleJeneric<VAR>
where VAR : struct
{
public VAR Test(VAR a1){ return a1; }
}
◇ジェネリックメソッド
・様々なデータに対応したメソッド
・引数の数やデータ型、戻り値の型を指定
ジェネリックメソッドの記述方法
int Min<T>(int a, int y)
where int : IComparable
{
return a.ComparaTo(b) < 10 ? a : b;
}
★ジェネリック型制約
・ジェネリックメソッドの型引数が持つ機能を指定し、対応できるようにします。
・各製薬は併用指定可能
ジェネリック型制約の種類
種類 | 内容 |
---|---|
where T:struct | 値型のみ 値型と参照型を参照 他制約と併用する場合は最初に記述 |
where T:class | 参照型のみ 他制約と併用する場合は最初に記述 |
where T:クラス名 | 指定したクラス、またはその派生クラス |
where T:インターフェース名 | 指定したインターフェイスクラスを継承するクラス |
where T:new() | 引数無しのコンストラクターを持つクラス 他制約と併用する場合は最初に記述 |
where T:unmanaged | アンマネージ型 値型をポインタで扱う場合に使用 |