扩展方法-必须使用这个关键字
本文关键字:关键字 方法 扩展 | 更新日期: 2023-09-27 17:49:38
我在ASP. js中添加了一个扩展方法。净System.Web.UI.Page。应用程序中的每个页面都继承自这个类。
但是,我不能直接访问扩展方法。我必须输入this.MyMethod();
而不是只用MyMethod()
。我认为this
的方法/属性本身就在默认范围内。我有什么不明白的吗?或者这是扩展方法的细微差别?
我认为方法/属性这本来就是默认的范围。
。但默认作用域中this
的扩展方法是而不是方法;它们是静态方法,可以通过编译器提供的语法糖来访问。
我相信你已经知道了这一点,但只是为了澄清:如果ExtensionMethod
是类的扩展方法,其范围,你目前在,输入这个:
this.ExtensionMethod();
…与
相同SomeStaticClass.ExtensionMethod(this);
this
需要作为参数传递给ExtensionMethod
。上面的第一种方式,编译器会简单地为你做这些。
当然,它们可以实现不同的东西,以便编译器将扩展方法和类成员"引入"默认作用域;他们只是选择不这么做。就我个人而言,我喜欢这样;但我想这是个主观问题。无论如何,如果你不喜欢输入this
,这只是一个小烦恼,对吧?
这是扩展方法的细微差别吗?
是的,它是。(正如其他人所解释的那样)
如果您想不加任何限制地使用该方法,那么您可以创建一个从Page继承并包含您的方法的类(当然,减去第一个参数)。然后使应用程序中的每个页面都继承自新的自定义页面。
为了使用扩展方法,你应该声明:
using Namespace.Where.Extension.Method.Is.Located
不要忘记保存扩展方法的类应该是静态的。