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

发布于 2024-09-13 13:48:56 字数 200 浏览 4 评论 0原文

这是一个基本问题,但似乎仍然难倒了我。

给定“嵌套泛型”:

IEnumerable<KeyValuePair<TKey, TValue>>

这是否表明 IEnumerable 可以具有本身为 KeyValuePair 的泛型类型?

谢谢,

斯科特

A bit of a basic question, but one that seems to stump me, nonetheless.

Given a "nested generic":

IEnumerable<KeyValuePair<TKey, TValue>>

Is this stating that IEnumerable can have generic types that are themselves KeyValuePair 's ?

Thanks,

Scott

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

国际总奸 2024-09-20 13:48:56

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

IEnumerable<KeyValuePair<string, int>>

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

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

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

Yes. The KeyValuePair type expects two generic type parameters. We can either populate them by pointing to concrete types:

IEnumerable<KeyValuePair<string, int>>

Or we can populate them by using other generic parameters already specified by the outer class:

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

Generic type parameters are always specified "at-use", or at the point where you are using the class or method that requires them. And just like any other parameter, you can fill it with a constant, hard-coded value (or type in this case), or another variable.

巴黎夜雨 2024-09-20 13:48:56

是的,这是“Key/Value 对的 IEnumerable”。它将这样声明:

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

或类似的。

我唯一能想到的就是这种特殊用法可以让你拥有一个带有重复键的“字典”。

Yes, this is "An IEnumerable of Key/Value pairs." It would be declared thusly:

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

Or similar.

About the only think I can think this particular usage would do is allow you to have a "dictionary" with repeated keys.

玉环 2024-09-20 13:48:56

简而言之,这意味着当您枚举 IEnumerable 时,您将获得 KeyValuePair (对于任何类型 TKey< /code> 和 TValue 设置为)。

所以,是的。

In a nut shell, it means that when you enumerate over that IEnumerable, you're going to get KeyValuePair<TKey, TValue> (for whatever types TKey and TValue are set to).

So, yes.

女中豪杰 2024-09-20 13:48:56

这里

IEnumerable<KeyValuePair<string, int>>

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

Here

IEnumerable<KeyValuePair<string, int>>

The IEnumerable itself is not a generic. It knows that it is going to contain KeyValuePair. Here KeyValuePair is the generic which can contain any 2 generic types.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文