Sco*_*ies 5 c# generics nested-generics
这是一个基本问题,但似乎让我感到困惑.
鉴于"嵌套通用":
IEnumerable<KeyValuePair<TKey, TValue>>
Run Code Online (Sandbox Code Playgroud)
这说明IEnumerable可以拥有本身就是KeyValuePair的泛型类型吗?
谢谢,
斯科特
是.KeyValuePair类型需要两个泛型类型参数.我们可以通过指向具体类型来填充它们:
IEnumerable<KeyValuePair<string, int>>
Run Code Online (Sandbox Code Playgroud)
或者我们可以使用外部类已经指定的其他通用参数来填充它们:
class Dictionary<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>
Run Code Online (Sandbox Code Playgroud)
通用类型参数始终指定为"使用中",或者在您使用需要它们的类或方法时指定.就像任何其他参数一样,您可以使用常量的硬编码值(或本例中的类型)或其他变量填充它.