English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
前回の記事で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#のジェネリクスタイプであり、皆さんに役立つことを願っています。