Je suis assez nouveau pour C# et essayer de comprendre les insertions de chaîne (c.-à-"some {0} string", toInsert
) et couru à travers un problème que je ne m'y attendais pas ...C# insertions de chaînes confondues avec des paramètres facultatifs
Dans le cas où vous avez deux constructeurs:
public MyClass(String arg1) { ... }
public MyClass(String arg1, String arg2) { ... }
Est-il possible pour moi d'utiliser le premier constructeur avec une insertion de chaîne?
...
toInsert = "def"
myClass = new MyClass("abc{0}ghi", toInsert)
...
Ou va C# interpréter cela comme le deuxième constructeur et passer un "abc{0}ghi"
littéral comme premier argument?
En fait, String.Format() appelle à StringBuilder.AppendFormat() –
Alors, devrais-je toujours envelopper mon formatage dans string.Format() pour éviter les bugs sur la route où les classes avec un constructeur en obtenir un nouveau? – tgray
Non, c'est une conclusion injustifiée. new MyClass (A) appelle le ctor qui accepte un param, et new MyClass (A, B) appelle le ctor qui accepte 2 params, indépendamment de ce que vous substituez à A et B. Vous avez remplacé "abc {0} ghi" par A Cela ne change rien au fait que vous avez passé 2 params. – Cheeso