私は魔法の前半の部分を知っていました。私が持っていると仮定します:
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()
かBarExt.M()
?実際、私はそれをテストし、答えはですBarExt
が、なぜですか?wow.M()
別のものがあるWow : Foo
がない場合、電話するとどうなりWowExt.M()
ますか?