J'ai deux méthodes surchargées, une avec un paramètre facultatif.Méthodes surchargées en conflit avec des paramètres optionnels
void foo(string a) { }
void foo(string a, int b = 0) { }
maintenant j'appelle:
foo("abc");
fait intéressant la première surcharge est appelée. pourquoi pas la deuxième surcharge avec la valeur optionnelle réglée à zéro?
Pour être honnête, je m'attendrais à ce que le compilateur apporte une erreur, au moins un avertissement pour éviter l'exécution involontaire de la mauvaise méthode.
Quelle est la cause de ce comportement? Pourquoi l'équipe C# l'a-t-elle définie ainsi?
C'est exactement le genre de mauvaise conception de langage qui conduit à des bugs insidieux. Il pourrait également être facilement exploité par un initié à des fins d'espionnage d'entreprise. Je souhaite qu'ils bloqueraient la langue de permettre déjà cela. –