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

最佳答案

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


正如Pratik指出的那样,我们面临的问题不是“为什么嵌套或泛型类中不允许使用扩展方法?”作为语言设计师,我们面临的问题是“为什么在嵌套或通用类中应允许使用扩展方法?”

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

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

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


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


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

关于c# - 为什么扩展方法只允许在非嵌套,非通用静态类中使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30860809/

10-12 22:56