English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C#ジェネリックタイプの詳細分析

前回の記事でC#の型システム(値型と参照型)について簡単に説明しました。次に、この記事でC#のジェネリクス型について紹介します。

C#のジェネリクスについて説明します。ジェネリクスを使うことでコードの再利用性が向上し、一瞬でコードがクールになります。もちろん、少ししかなりません。本当に少ししかなりません。なぜなら、学ぶべき多くの知識があるからです。次のDictionary<TKey, TValue>を使用した例を見てみましょう。

static void Main(string[] args)
{
 Dictionary<int, string> result = GetAll();
}
public static Dictionary<int, string> GetAll()
{
  var dic = new Dictionary<int, string>();
 dic.Add(1, "aaa");
 dic.Add(1, "aaa");
 dic.Add(1, "aaa");
 return dic;
}

  ジェネリクの二つの形式: ジェネリクタイプ(クラス、インターフェース、デリゲート、構造)とジェネリクメソッド、TKeyとTValueが型引数であり、intとstringが実際のタイプであり、型引数は実際のタイプの占位符であることがわかります。型引数に実際のパラメータを提供していないジェネリクは未構造化ジェネリクと呼ばれ、型引数を指定すると既構造化ジェネリクと呼ばれ、実際の型のインスタンスが使用されるオブジェクトです。以下の関係図を参照してください。

  ジェネリクの判定は頭が痛いことです。次に詳しく説明しますが、説明が明確ではないかもしれません。最善を尽くしますが、私も本の中の説明がよくわからないので、ここで説明します。わからない場合は、本の説明を確認してください。まずは以下の図を見てください。

  このようなジェネリクメソッドを見ると、実際の使用ではその中のパラメータタイプを置き換える必要があります(前述の通り、パラメータタイプは実際のタイプ引数の占位符です)、stringを使用してTを置き換え、intを使用してTOutputを置き換えます。  

 public static List<int> GetAll(Converter<string, int> conv)
 {
}

  その中でConverter<string, int>は既構造化された型であり、convは引数であり、今ではこのジェネリクメソッドの作用がわかるはずです: Converter<string, int>ジェネリクデリゲートのインスタンスを引数として使用して、整数のリストを返す。

以上の説明は、編集者が皆さんに紹介したC#のジェネリクスタイプであり、皆さんに役立つことを願っています。