Why can’t I have static and instance methods with the same name?

Q: Why can’t I have static and instance methods with the same name?

class Test
{
    static void Process();
    void Process();
    void AmbiguousCaller() { Process(); }
}

there’s no ambiguity, since the first can only be called through the type name, and the second can only be called through an instance.

A:

It is true that there would be no ambiguity between the two functions as far as a compiler is concerned. There would, however, be a considerable potential for confusion on the part of the user. It would be tough to find the right method in documentation, and once you did, hard to be sure that you are calling the right version (ie you could accidentally call the static version when you wanted the instance version).

We therefore prohibit this case.

[Author: Eric Gunnerson]