Ich habe zwei überladene Methoden, eine mit einem optionalen Parameter.Widersprüchliche überladene Methoden mit optionalen Parametern
void foo(string a) { }
void foo(string a, int b = 0) { }
jetzt nenne ich:
foo("abc");
Interessanterweise ist die erste Überladung genannt wird. Warum nicht die zweite Überlast mit optionalem Wert auf Null gesetzt?
Um ehrlich zu sein, hätte ich erwartet, dass der Compiler einen Fehler bringt, zumindest eine Warnung, um unbeabsichtigte Ausführung der falschen Methode zu vermeiden.
Was ist der Grund für dieses Verhalten? Warum hat das C# -Team das so definiert?
Dies ist genau die Art von schlechtem Sprachdesign, die zu heimtückischen Bugs führt. Es könnte auch leicht von einem Insider für Unternehmensspionage ausgenutzt werden. Ich wünschte, sie würden die Sprache daran hindern, dies bereits zuzulassen. –