少し基本的な質問ですが、それでも私を困惑させているようです。
「ネストされたジェネリック」が与えられた場合:
IEnumerable<KeyValuePair<TKey, TValue>>
これは、IEnumerableがそれ自体がKeyValuePairのジェネリック型を持つことができることを示していますか?
ありがとう、
スコット
少し基本的な質問ですが、それでも私を困惑させているようです。
「ネストされたジェネリック」が与えられた場合:
IEnumerable<KeyValuePair<TKey, TValue>>
これは、IEnumerableがそれ自体がKeyValuePairのジェネリック型を持つことができることを示していますか?
ありがとう、
スコット
はい。KeyValuePair型には、2つのジェネリック型パラメーターが必要です。具体的なタイプを指すことで、それらを設定することができます。
IEnumerable<KeyValuePair<string, int>>
または、外部クラスによってすでに指定されている他のジェネリックパラメーターを使用してそれらを設定することもできます。
class Dictionary<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>
ジェネリック型パラメーターは、常に「使用時」、またはそれらを必要とするクラスまたはメソッドを使用している時点で指定されます。また、他のパラメーターと同様に、ハードコードされた定数値(またはこの場合はタイプ)または別の変数をパラメーターに入力できます。
はい、これは「キーと値のペアのIEnumerable」です。このように宣言されます:
IEnumberable<KeyValuePair<string, string>> reallyComplicatedDictionary =
new IEnumerable<KeyValuePair<string, string>>();
または類似。
この特定の使用法が行うと私が考えることができる唯一の考えは、キーが繰り返される「辞書」を持つことを可能にすることです。
一言で言えば、それを列挙すると、 (どのタイプに設定されていても)IEnumerable
取得することを意味します。KeyValuePair<TKey, TValue>
TKey
TValue
あ、はい。
ここ
IEnumerable<KeyValuePair<string, int>>
IEnumerable自体はジェネリックではありません。KeyValuePairが含まれることを認識しています。ここで、KeyValuePairはジェネリックであり、任意の2つのジェネリックタイプを含めることができます。