Let we have two members equal by signature, but one is static and another - is not:
class Foo
{
public void Test() { Console.WriteLine("instance"); }
public static void Test() { Console.WriteLine("static"); }
}
but such code generate brings a compiler error:
Type 'Foo' already defines a member called 'Test' with the same parameter types
But why?
Let we compiled that successfully, then:
Foo.Test()
should output "static"new Foo().Test();
should output "instance"
Can't call the static member instead of instance one because in this case another, more reasonable compiler error will occur:
Member 'Foo.Test()' cannot be accessed with an instance reference; qualify it with a type name instead