何故ジェネリックが必要なの?何のためにジェネリックが存在するの?
>型だけ違って処理の内容が同じようなものを作るときに使う。
すげー昔の昔の昔!ある現場で2つのint値の大きいほうをとる関数を作る。
int GetMax(int x, int y)
{
return x > y ? x : y;
}
次の日、2つのdouble値の大きいほうをとる関数がほしい。
double GetMax(double x, double y)
{
return x > y ? x : y;
}
次の日.....マジがよ!!
同じ処理のメソッドを一杯作りたいくないでしょう!
神ジェネリックが誕生:
static Type GetMax<Type>(Type a, Type b)
where Type : IComparable
{
return a.CompareTo(b) > 0 ? a : b;
}
where はなだ?
where キーワードを使って型に制約条件を付加します。
CompareToを使うために、where Type : IComparableを書かないと行けないですよ。
int n1 = GetMax<int>(5, 10);
int n2 = GetMax(5, 10);
double x = GetMax(5.0, 10.0);
string s = GetMax("abc", "cat");
すすすすごいでしょう!!!!