gpt4 book ai didi

c# - 扩展方法 - 必须使用此关键字?

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:35 24 4
gpt4 key购买 nike

我已将扩展方法添加到 ASP.NET System.Web.UI.Page。我的应用程序中的每个页面都继承自此类。

但是,我不能只访问扩展方法。我必须键入 this.MyMethod(); 而不是只能使用 MyMethod()。我认为 this 的方法/属性本质上在默认范围内。我不明白什么?或者这是扩展方法的细微差别?

最佳答案

I thought that methods/attributes of this were inherently in the default scope.

他们是。但是扩展方法不是默认范围内this的方法;它们是静态方法,可通过编译器礼貌提供的语法糖访问。

我相信您已经知道这一点,但只是为了澄清:如果 ExtensionMethod 是您当前所在范围内的类的扩展方法,请键入:

this.ExtensionMethod();

...等同于:

SomeStaticClass.ExtensionMethod(this);

this 需要作为 参数 传递给 ExtensionMethod。上面的第一种方式,编译器只是为你做这件事。

自然地,他们可以以不同的方式实现事物,以便编译器“引入”扩展方法和类成员到默认范围;他们只是选择不这样做。就个人而言,我喜欢这样;但我想这是一个主观问题。无论如何,如果您不喜欢必须键入 this,这只是一个小麻烦,对吧?

关于c# - 扩展方法 - 必须使用此关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5586050/

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