c# - 泛型——需要说明

标签 c# generics

当我们声明(示例)List<T>我能理解声明,但假设我声明

IEnumerable<T<T1, T2>>

我实际上声明了什么?

  1. 这是否意味着,IEnumerable<T>包含两个通用类型? (使用方法是什么?)

  2. 我可以有像Person<T<T2<T3<P1,P2>>>>这样的深层嵌套吗? ?

简单的例子会很有帮助。

最佳答案

如果你有课

public class Pair<T1, T2> { ... }

然后你可以声明一个方法

IEnumerable<Pair<int, string>> GetPairs();

即一种返回可枚举对的方法,其中每对由一个 int 和一个字符串组成。

用法:

foreach (Pair<int, string> pair in GetPairs()) { ... }

你也可以深度嵌套这些:

IEnumerable<Pair<int, Pair<string, string>>> GetPairs();

即一种返回可枚举对的方法,其中每对由一个 int 和一对两个字符串组成。

这也适用于泛型:

IEnumerable<Pair<T1, T2>> GetPairs<T1, T2>();

即返回可枚举对的方法,其中每对由 T1 和 T2 组成。

但是你不能这样做:

IEnumerable<T<T1, T2>> GetGenericPairs<T, T1, T2>();

关于c# - 泛型——需要说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1716132/

相关文章:

c# - 如何使用泛型

c# - 泛型类中的数组和索引器

java - 未使用原始类型时发生原始类型错误

c# - Linq 包含枚举数组

c# - 在不聚焦窗口的情况下捕获键

c# - 在运行时从自定义 UITypeEditor 中的属性上插入自定义 TypeConverter

generics - 自由箭头的有用操作

c# - 如果您不打算从自适应呈现中获益,那么使用 HtmlTextWriter 有什么好处吗?

c# - SSIS-PostAsJsonAsync 不起作用

c# - 可以创建 key 未知的通用搜索方法