Eri*_*ert 54
为什么扩展方法只允许在非嵌套的非泛型静态类中使用?
作为PRATIK指出的,我们面临的问题不是"为什么扩展方法不能嵌套或泛型类允许吗?" 我们所面临语言设计者的问题是"为什么要扩展方法在嵌套或泛型类被允许?"
除非某些实际用户需要该功能是合理的,否则我们不会承担设计,实施,测试,记录和维护该功能的相当大的成本.
基本上,扩展方法旨在使LINQ工作.任何对LINQ工作没有贡献的东西都被削减了.LINQ只需要静态,非泛型,非嵌套类中的扩展方法才能工作,这就是我们设计和实现的内容.
如果你有一个扩展方法在非静态,泛型或嵌套类中有用的场景,那么我很高兴看看这个场景.我们获得的现实场景越多,我们就越有可能在某些假设的未来语言中创建一个有利于这些场景的功能.
在嵌套的通用静态类中考虑扩展方法是没用的吗?
不,考虑它是个好主意.如果我们不考虑它们,我们就会失职.我们认真考虑了很长时间,并认为在此考虑的基础上,这项功能的成本并没有因所产生的利益而合理.