为什么不支持C#静态类扩展方法?

从这个问题中我知道扩展方法只能在类实例上运行,而不能在静态类本身上运行。这意味着我无法扩展像Convert和这样的有用的静态类Math。


我想知道的是,为什么会这样呢?在上面的链接中,对C#团队如何实现这种功能提出了一些建议。有什么哲学原因为什么不支持它?


例如,这是为什么没有针对的内置LINQ 扩展的背后原理。ForEach<T>IEnumerable<T>


湖上湖
浏览 1147回答 3
3回答

HUH函数

C#团队可能已经实现了这种功能。有什么哲学原因为什么不支持它?没有技术上的原因,也没有哲学上的原因。然而,正如我经常指出,我没有提供的理由不这样做的特征。功能并不便宜;它们非常昂贵,不仅必须证明自己的成本是合理的,而且还必须证明不使用该预算可以完成的其他一百项功能的机会成本。我们必须向利益相关者证明功能的成本是合理的,但是我们不必通过不实施不符合我们标准的功能来节省时间和精力。特别是,所提出的功能对LINQ无效。添加了扩展方法以使LINQ正常工作。不能使LINQ正常工作的任何东西都很难进入C#3.0。我们按计划进行了很多工作,花了很多时间。(令我惊讶的是自动属性。)在设计之前就剪掉不必要的功能可以节省很多时间和精力,而其他功能事情做使LINQ的工作。简而言之:建议的功能从未达到过我们获得净收益超过成本的标准,而且我们一直拥有更重要的功能来花费有限的时间和精力。
打开App,查看更多内容
随时随地看视频慕课网APP