一尘不染

为什么扩展方法只允许在非嵌套,非通用静态类中使用?

c#

为什么扩展方法只允许在非嵌套,非通用静态类中使用?在嵌套的通用静态类中考虑扩展方法是否没有用?


阅读 260

收藏
2020-05-19

共1个答案

一尘不染

为什么扩展方法只允许在非嵌套,非通用静态类中使用?

作为PRATIK指出,这个问题我们面对的不是“为什么扩展方法 不能 嵌套或泛型类允许吗?” 我们所面临语言设计者的问题是“为什么
扩展方法在嵌套或泛型类被允许?”

除非该功能因某些现实世界的用户需求而合理,否则我们将不会承担设计,实施,测试,记录和维护该功能的巨额成本。

基本上,设计扩展方法是为了使LINQ正常工作。任何对使LINQ正常工作没有贡献的东西都被削减了。LINQ仅需要静态,非通用,非嵌套类中的扩展方法即可工作,因此这就是我们设计和实现的。

如果您有一个扩展方法在非静态,通用或嵌套类中有用的场景,那么我很乐意看一下该场景。我们获得的现实场景越多,我们很有可能会以某种未来的假设语言来制作功能,从而使这些场景受益。

在嵌套的通用静态类中考虑扩展方法是否没有用?

不,考虑一下是一个好主意。如果我们不考虑这一点,我们将被辞职。我们经过长时间的仔细考虑,并决定基于此考虑,使用该功能所产生的收益并不能证明其功能的合理性。

2020-05-19