Ich bin ziemlich neu in C#, und zu versuchen, String Einfügungen, um herauszufinden, (dh "some {0} string", toInsert
) und über ein Problem lief ich nicht erwartet habe ...C# String Einfügungen mit optionalen Parametern verwirrten
Im Fall wo haben Sie zwei Konstruktoren:
public MyClass(String arg1) { ... }
public MyClass(String arg1, String arg2) { ... }
Ist es möglich für mich, den ersten Konstruktor mit einer Zeichenfolge einfügen zu verwenden?
...
toInsert = "def"
myClass = new MyClass("abc{0}ghi", toInsert)
...
Oder wird C# diese als zweite Konstruktor interpretieren und eine wörtliche "abc{0}ghi"
als erstes Argument übergeben?
eigentlich der erste Konstruktor nehmen, String.Format(), um StringBuilder.AppendFormat ruft() –
Also sollte ich wickle immer meine Formatierung in string.Format(), um Fehler auf der Straße zu vermeiden, wo Klassen mit einem Konstruktor einen neuen bekommen? – tgray
Nein, das ist eine ungerechtfertigte Schlussfolgerung. new MyClass (A) ruft den ctor auf, der einen param akzeptiert, und new MyClass (A, B) ruft den ctor auf, der 2 params akzeptiert, unabhängig davon, was Sie für A und B ersetzen. Sie haben "abc {0} ghi" für A verwendet Dies ändert nichts an der Tatsache, dass du 2 Params bestanden hast. – Cheeso