gpt4 book ai didi

c# - 扩展方法需要将类声明为静态

转载 作者:IT王子 更新时间:2023-10-29 04:30:44 26 4
gpt4 key购买 nike

为什么扩展方法要求声明类是静态的?这是编译器要求吗?

最佳答案

它在语言规范中规定,C# 4 规范的第 10.6.9 节:

When the first parameter of a method includes the this modifier, that method is said to be an extension method. Extension methods can only be declared in non-generic, non-nested static classes. The first parameter of an extension method can have no modifiers other than this, and the parameter type cannot be a pointer type.

我不清楚为什么所有这些限制都是必要的——除了潜在的编译器(和语言规范)的简单性。我明白为什么将其限制为非泛型类型是有意义的,但我不能立即明白为什么它们必须是非嵌套和静态的。我怀疑如果您不必担心当前类型中包含的类型等,它会使查找规则变得相当简单,但我敢说这是可能的。

我怀疑没有这些限制的额外复杂性被认为小于获得的好处。

编辑:为了清楚起见,我并不是说将实例方法作为扩展方法是有意义的——我是说在嵌套和/或非嵌套中使用静态扩展方法是有意义的-静态类。

关于c# - 扩展方法需要将类声明为静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2731695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com