generics如何影响C#和.NET的设计?

这可能是一个广泛的问题,但这是我不太清楚和非常好奇的事情。

通常,对于某些问题,我听到的原因是因为Generics在.NET 1.0中不可用。 这让我想到以下两件事之一:

  1. 之前没有想到generics,所以开发人员在.NET 1.0之后提出它可能会对C#和.NET的设计产生巨大影响,但由于已做出的决定(向后兼容性)而无法实现。

  2. generics从一开始就一直在计划中,因此不使用.NET 1.0发布的唯一问题是无法在2.0之前使用它。 但除此之外,没有引入或错误的冗余function,提出了不可逆转的决定。

我主要假设#1,但实际情况是#2?

generics已经存在了很长时间,并且可以与C ++模板进行松散的比较,尽管这个概念(以及可能在其他语言中的实现)早于此。

.Net 1.0是平台的第一个版本,所以计划是运送合理的东西。 如果任何体面的架构师在团队中,generics将不得不处于“计划的未来”,但是可以在以后添加。 事实上,关于实现.NETgenerics的论文是在一年前发布的.Net Framework 1.0 RTM最终出现了。

时间表:( http://en.wikipedia.org/wiki/List_of_.NET_Framework_versions

2002-03-05 .Net Framework version: 1.0.3705.0 released ~May, 2001 Don Syme's paper on "Design and implementation of generics for .NET" 

微软可能用了10年的时间来构建.Net Framework 4.0(作为1.0版本),但是如果有如此多的代码和许多function,那么如果项目能够成功的话,需要5年才能找到所有的错误和可用性问题。

所以问题的答案是#2。

Don Syme主要为C#和.Net设计并实现了generics。

资源

  • 随着时间的推移,C#中添加了语言function(C#是.Netfunction的展示语言)
  • .NET公共语言运行库的generics的设计和实现
  • .NET公共语言运行库的genericsforms化
  • Anders Hejlsberg,C#的首席架构师
  • Anders Hejlsberg谈到了generics

Anders Hejlsberg是我的英雄 – 来自维基百科 – Turbo Pascal的原作者,Delphi的首席架构师,后来是C#的首席架构师

我几乎可以肯定,从一开始就设想了仿制药。 完全意识到这项工作将会相当可观。 该项目由Don Syme(F#成名)领导,他的第一本关于该设计的出版物于2001年1月出版 .CLR作为给定的文件呈现,该文件记录了MSIL的新增内容,尽管当时.NET 1.0尚未发布然而。 那又过了一年。 总而言之,可能可以得出结论,将它们用了近4年的时间才能将它们整合到具体的运输软件中。

如果您对c#的历史感兴趣,请查看channel9和此video

他们对Anders Hejlsberg进行了一些关于这种事情的采访

F#的设计者Don Syme负责.NETgenerics。