我知道魔法的前半部分。假设我有:
public class Foo {}
public class static FooExt
{
public static void M(this Foo f) {}
}
当我调用foo.M()
编译器将其更改为FooExt.M(foo)
.
但是继承呢?例如:
public class Bar : Foo {}
public class static BarExt
{
public static void M(this Bar b) {}
}
当我调用bar.M()
时,它会调用FooExt.M()
orBarExt.M()
吗?事实上我测试了它,答案是BarExt
,但为什么呢?wow.M()
如果我有另一个Wow : Foo
但没有,当我打电话时会发生什么WowExt.M()
?