在C#中,在调用类的方法时隐式使用“this”引用。使用扩展方法时,这似乎不成立:
public static class TestExtensions
{
public static void ExtensionMethod(this Test t)
{
// IMPLEMENTATION
}
}
public class Test
{
public void A()
{
B(); // implicitly this.B();
}
public void B()
{
ExtensionMethod(); // doesn't work!
this.ExtensionMethod(); // works!
}
}
据我所知,扩展方法仅仅是“糖”,它将“this”引用传递给statis扩展方法。但是,为什么它还应该强制添加“this”关键字,如果它能找到要调用的方法呢?
答案 0 :(得分:1)
因为您必须区分扩展方法和普通静态方法。这是说编译器它是一个扩展的关键,否则你应该像ExtensionMethods.Method(instance,arg,arg,...)一样调用它(顺便说一下)。