gpt4 book ai didi

c# - 为什么这对于父类(super class)的扩展方法是必需的?

转载 作者:行者123 更新时间:2023-11-30 19:07:49 25 4
gpt4 key购买 nike

这是一个示例代码,显示了奇怪的地方:(代码已根据评论修复)

public class C{}
public static class E {
public static void Foo(this C o) { }
}
class D:C {
void test() {
// Foo(); // will not compile
this.Foo(); // compile ok
}
}

自然地,在真实场景中,类 C 将是一个我无权访问其源代码的类

有人知道为什么这个奇怪的要求使用 this 关键字吗?

最佳答案

查看 C# 规范,第 7.6.5.2 节指定扩展方法调用仅适用于以下格式的方法调用:

expr . identifier ( )  
expr . identifier ( args )
expr . identifier < typeargs > ( )
expr . identifier < typeargs > ( args )

当是独立方法调用时,没有expr,所以不去寻找扩展方法。这是因为没有 expr,它不知道扩展方法的第一个参数应该是什么。

关于c# - 为什么这对于父类(super class)的扩展方法是必需的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3301766/

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