【发布时间】:2011-02-23 22:57:02
【问题描述】:
这可能是一个广泛的问题,但我不是很清楚,也不是很好奇。
对于某些问题,我经常听到原因是因为泛型在 .NET 1.0 中不可用。这让我想到以下两件事:
以前没有考虑过泛型,因此开发人员在 .NET 1.0 之后提出了它,这可能会极大地影响 C# 和 .NET 的设计,但由于已经做出决定(向后兼容性)而不能这样做。
泛型从一开始就一直在计划中,因此在 .NET 1.0 中没有发布它的唯一问题是直到 2.0 才能够使用它。但除此之外,没有引入多余的功能,也没有做出错误的、不可逆转的决定。
我主要假设 #1,但 #2 是实际情况吗?
【问题讨论】:
-
这看起来像是飞碟人的工作。
-
或 Eric Lippert。
-
1.0 没有泛型或模板。 1.1 的出现是因为他们通过用户测试发现 1.0 使用起来很糟糕。 2.0 是一次重写,是我们今天使用的基础。
-
考虑到 C++ 在 C# 之前有多久的模板,我很确定 1 不是答案。埃里克·利珀特(Eric Lippert)可能会加入
-
@Joan:不,它们非常不同。 C++ 模板可以接受非类型参数,它们是编译时特性。 C# 泛型只能接受类型参数,它们是运行时特性。表面上它们很相似,但实际上它们有很大不同——只需查看C++ generics 即可了解不同之处。