【C#】型をメソッドに渡す
渡すとはちょっと違うんですが、こんな感じにすると渡せます。
public T[] Hoge<T>(T a) { T[] arr = new T[5]; arr[0] = a; return arr; }
こういうのをジェネリックといいます。
Listでおなじみのアレですね。
メソッド名の後ろに<T>*1とつけるとジェネリックメソッドになります。
呼び出し時にTの部分に型を以下のように指定すると、Tが指定した型になった状態でメソッドが動作します。
Hoge<int>(324)
これは以下と同じになります。
public int[] Hoge<int>(int a) { int[] arr = new int[5]; arr[0] = a; return arr; }
結果
複数渡すこともできます。
public Dictionary<T1, T2> GetDic<T1, T2>(T1 a, T2 b) { Dictionary<T1, T2> dic = new Dictionary<T1, T2>(); dic.Add(a, b); return dic; }
以下のように使えます。
var x = GetDic<double, string>(0.4,"あ");
これは以下と同じです。
public Dictionary<double, string> GetDic<double, string>(double a, string b) { Dictionary<double, string> dic = new Dictionary<double, string>(); dic.Add(a, b); return dic; }
結果
参考
ジェネリック - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
*1:Tの名称は別に何でもいい