6
为什么从扩展类中调用扩展方法需要'this'关键字
我为ASP.NET MVC ViewPage创建了扩展方法,例如: public static class ViewExtensions { public static string Method<T>(this ViewPage<T> page) where T : class { return "something"; } } 从视图(从派生ViewPage)中调用此方法时,除非得到使用关键字进行调用的错误,否则会出现错误“ CS0103:名称“方法”在当前上下文中不存在” this: <%: Method() %> <!-- gives error CS0103 --> <%: this.Method() %> <!-- works --> 为什么this需要关键字?还是没有它就可以工作,但是我缺少了什么? (我认为此问题一定是重复的,但找不到) 更新: 正如Ben Robinson所说,调用扩展方法的语法只是编译器糖。那么为什么编译器在不需要this关键字的情况下不能自动检查当前类型的基本类型的扩展方法呢?