让我们有两个签名相等的成员,但一个是静态的,另一个 - 不是:
class Foo
{
public void Test() { Console.WriteLine("instance"); }
public static void Test() { Console.WriteLine("static"); }
}
但是这样的代码生成会带来编译器错误:
类型“Foo”已经定义了一个名为“Test”的成员,具有相同的参数类型
但为什么?
让我们编译成功,然后:
Foo.Test()
应该输出“静态”new Foo().Test();
应该输出“实例”
不能调用静态成员而不是实例一个,因为在这种情况下会发生另一个更合理的编译器错误:
无法使用实例引用访问成员“Foo.Test()”;改为使用类型名称来限定它