4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【読書ノート】《C# in Depth》~6ジェネリック

Posted at

何故ジェネリックが必要なの?何のためにジェネリックが存在するの?

>型だけ違って処理の内容が同じようなものを作るときに使う。

すげー昔の昔の昔!ある現場で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");

すすすすごいでしょう!!!!

4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?