2017-11-06 1 views
0

Betrachten wir zwei Methoden mit dem gleichen Namen, aber unterschiedlichen Parametern:Mehrere anwendbare Methoden

private void Method(int number) => Debug.WriteLine("I'm method 01"); 

private void Method(int number, string name = "") => Debug.WriteLine("I'm method 02"); 

Theoretisch, wenn wir Method(0); nennen, beide Methoden anwendbar sind. Es gibt keine Fehler/Warnungen.

Debugging zeigt, dass der Compiler die Methode 01 übernimmt - gibt es dafür eine Regel?

Gibt es keine Gefahr, dass Methode 02 aufgerufen wird?

+2

Die spezifischste Methode. –

+1

Es gibt eine bestimmte Sprache in der Spezifikation, die besagt, was in diesem Szenario zu tun ist. Siehe die Antwort auf die doppelte Frage für die Erklärung. – dasblinkenlight

Antwort

2

Die C# -Spezifikation erklärt genau, wie die Überladungsauflösung funktioniert.

Genaue Details siehe here.

C# ist keine zufällige Sprache; Jedes mögliche Stück Code hat entweder eine spezifizierte Bedeutung (die sich niemals ändert) oder einen Compilerfehler.

+0

'Überladungsauflösung' - Ich wusste, dass mir etwas fehlte. Vielen Dank – Romasz