c# - 为什么扩展方法只允许在非嵌套、非泛型静态类中使用?

标签 c#

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

最佳答案

Why are extension methods only allowed in non-nested, non-generic static class?

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

除非某些实际用户需求证明该功能是合理的,否则我们不会承担设计、实现、测试、记录和维护该功能的大量成本。

基本上,扩展方法旨在使 LINQ 正常工作。任何对 LINQ 工作没有贡献的东西都被删掉了。 LINQ 只需要静态、非泛型、非嵌套类中的扩展方法即可工作,这就是我们设计和实现的。

如果您遇到扩展方法在非静态类、通用类或嵌套类中很有用的场景,那么我很乐意查看该场景。我们获得的真实场景越多,我们就越有可能在某种假设的 future 语言中创建一个有利于这些场景的功能。

Is it useless to consider extension methods in nested, generic static class?

不,考虑一下是个好主意。不考虑就是失职。我们仔细考虑了很长时间,并决定基于这种考虑,实现该功能的成本与所产生的 yield 不相称。

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

相关文章:

c# - 发布 .net 核心应用程序时出错 "no startup configured "

c# - SendMessage 中的误导参数类型 (... IntPtr wParam ...)

c# - FormsAuthentication.RedirectToLoginPage() 不工作

c# - LuaInterface - 在 .Net 3.5/.Net 4.0 下编译 FileLoadException

c# - 是否有任何扩展方法使返回 lambda 表达式无效?

c# - MVC Post 导致 QueryString 在重新加载同一 View 时丢失

c# - 最小起订量 - 模拟 MVC Controller 的 Response.Cookies.Clear()

c# - 如何在 mvc 4 razor 的数据库中保存嵌套的可排序菜单?

c# - 丑陋的类接口(interface)定义

c# - Xamarin Android App 导致设备重启