繁体   English   中英

C#中的嵌套泛型是什么意思?

[英]What do nested generics in C# mean?

这是一个基本问题,但似乎让我感到困惑。

鉴于“嵌套通用”:

IEnumerable<KeyValuePair<TKey, TValue>>

这说明IEnumerable可以拥有本身就是KeyValuePair的泛型类型吗?

谢谢,

斯科特

是。 KeyValuePair类型需要两个泛型类型参数。 我们可以通过指向具体类型来填充它们:

IEnumerable<KeyValuePair<string, int>>

或者我们可以使用外部类已经指定的其他通用参数来填充它们:

class Dictionary<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>

通用类型参数始终指定为“使用中”,或者在您使用需要它们的类或方法时指定。 就像任何其他参数一样,您可以使用常量的硬编码值(或本例中的类型)或其他变量填充它。

是的,这是“IEnumerable of Key / Value pair”。 它将如此宣布:

IEnumberable<KeyValuePair<string, string>> reallyComplicatedDictionary =
    new IEnumerable<KeyValuePair<string, string>>();

或类似的。

关于我认为这种特殊用法可以做的唯一想法是允许你有一个带有重复键的“字典”。

在坚果shell中,这意味着当你枚举IEnumerable ,你将得到KeyValuePair<TKey, TValue> (对于TKeyTValue设置的任何类型)。

所以,是的。

这里

IEnumerable<KeyValuePair<string, int>>

IEnumerable本身不是通用的。 它知道它将包含KeyValuePair。 这里KeyValuePair是通用的,可以包含任何2种泛型类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM