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

泛型如何影响C#和.NET的设计?,c#,.net,generics,C#,.net,Generics,这可能是一个广泛的问题,但这是我不太清楚和非常好奇的事情 对于某些问题,我经常听到这样的推理:这是因为泛型在.NET1.0中不可用。这让我想到以下两件事: 泛型以前没有被考虑过,所以开发人员在.NET1.0之后提出了它,这可能会极大地影响C#和.NET的设计,但由于已经做出了决定(向后兼容性),所以不能 泛型从一开始就被计划好了,所以不使用.NET1.0发布泛型的唯一问题是直到2.0才能使用它。但除此之外,没有引入任何冗余功能,也没有做出错误的、不可逆转的决定 我基本上是假设#1,但实际情况是#

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

对于某些问题,我经常听到这样的推理:这是因为泛型在.NET1.0中不可用。这让我想到以下两件事:

  • 泛型以前没有被考虑过,所以开发人员在.NET1.0之后提出了它,这可能会极大地影响C#和.NET的设计,但由于已经做出了决定(向后兼容性),所以不能

  • 泛型从一开始就被计划好了,所以不使用.NET1.0发布泛型的唯一问题是直到2.0才能使用它。但除此之外,没有引入任何冗余功能,也没有做出错误的、不可逆转的决定


  • 我基本上是假设#1,但实际情况是#2吗?

    如果你对c的历史感兴趣,请检查并


    他们已经和安德斯·海尔斯伯格做过类似的事情

    泛型已经有很长的时间,可以与C++模板相比松散,尽管概念(并且可能在其他语言中实现)甚至早于

    .NET1.0是平台的第一个部分,所以计划是运送一些合理工作的东西。如果团队中有像样的架构师,泛型必须在“计划的未来”中出现,但可以在以后添加。事实上,关于为.NET实现泛型的论文在.NETFramework1.0RTM最终出现前一年发表

    时间线:()

    微软本可以花10年时间来构建.NETFramework4.0(1.0版),但由于一次开发了这么多的代码和功能,如果项目能够成功,则需要5年时间才能找到所有的bug和可用性问题

    所以你的问题的答案是#2

    主要在C#和.Net中设计和实现泛型

    资源


    Anders Hejlsberg是我的英雄-来自维基百科-Turbo Pascal的原始作者,Delphi的首席架构师,后来是C#的首席架构师,F#的设计师,他对.NET泛型负有部分责任。

    我几乎可以肯定,泛型从一开始就被设想出来了。充分认识到这项工作将是相当可观的。该项目由Don Syme(来自F#fame)领导,他对设计的看法是2001年1月。CLR是作为一个给定的文件呈现的,该文件记录了MSIL的新增内容,尽管当时.NET1.0尚未发布。这又花了一年时间。总而言之,他们花了将近4年的时间才将其整合到具体的运输软件中。这看起来像是Skeet-man或Eric Lippert的工作。1.0没有泛型或模板。1.1问世是因为他们通过用户测试发现1.0使用起来很糟糕。2是重写,是我们今天使用的基础。考虑到C++在C++之前有多长时间,我敢肯定1不是答案。也许埃里克·利珀特会插嘴in@Joan字体不,它们很不一样。C++模板可以包含非类型参数,它们是编译时特性。C#泛型只能接受类型参数,它们是一种运行时特性。从表面上看,他们是相似的,但实际上他们是非常不同的——只要看看区别就知道了。那么安德斯没有参加1.0的比赛?琼-他是。但你不可能通过挖洞和花10年时间来建造一些东西来实现革命。让一些东西出来(至少可以合理地工作)并进化它。安德斯也应该如此。@Richard你忘了50美元的TurboPascal@从2011年开始,Richard TP看起来相当差劲,但我认为它确实是开创性的,至少在PC上是如此。
    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"