私の学習で見つけた次のプログラムがあります。 Class3とclass4メソッドの呼び出しがclass1とclass2と異なる理由を理解していません。私は4つのクラスすべてに違いは見られません。そして、クラス1とクラス2がどのようにして自動的に拡張メソッドを呼び出しますか?次のプログラムで拡張メソッドが明確でない
using System;
class Class1 {
}
class Class2 {
public void Method1(string s) {
Console.WriteLine("Class2.Method1");
}
}
class Class3 {
public void Method1(object o) {
Console.WriteLine("Class3.Method1");
}
}
class Class4 {
public void Method1(int i) {
Console.WriteLine("Class4.Method1");
}
}
static class Extensions {
static public void Method1(this object o, int i) {
Console.WriteLine("Extensions.Method1");
}
static void Main() {
new Class1().Method1(12); // Extensions.Method1 is called
new Class2().Method1(12); // Extensions.Method1 is called
new Class3().Method1(12); // Class3.Method1 is called
new Class4().Method1(12); // Class4.Method1 is called
}
}
助けてもらえますか?