Frage

Ich bin ziemlich neu in C #, und zu versuchen, String Einfügungen, um herauszufinden, (d "some {0} string", toInsert) und über ein Problem lief ich nicht erwartet habe ...

In dem Fall, dass Sie zwei Konstrukteure haben:

public MyClass(String arg1) { ... }

public MyClass(String arg1, String arg2) { ... }

Ist es möglich, dass ich den ersten Konstruktor mit einem String-Insertion zu benutzen?

...
toInsert = "def"
myClass = new MyClass("abc{0}ghi", toInsert)
...

Oder wird C # diese als zweiten Konstruktor interpretieren und eine wörtliche "abc{0}ghi" als erstes Argument übergeben?

War es hilfreich?

Lösung

Ja, wird dies als nur einen zweiten Parameter interpretiert werden.

Das Verhalten, das Sie beschreiben, heißt Zeichenfolge Formatierung und alles, was Saiten in diesem Stil akzeptiert verwendet string.Format () im Hintergrund. Lesen Sie die Dokumentation dieser Methode für Details.

Um das gewünschte Verhalten zu erhalten, verwenden Sie diesen Code:

myClass = new MyClass(string.Format("abc{0}ghi", toInsert));

Andere Tipps

Just tun:

public MyClass(string format, params object[] args)
{
  this.FormattedValue = string.Format(format, args);
}
  

Oder wird diese C # interpretieren, wie die   zweiter Konstruktor und ein Literal passieren   "Abc {0} ghi" als erstes Argument?

Das ist die richtige Antwort. Ich denke, wenn Sie String.Format ( "abc {0} ghi", toInsert) verwenden, dann wird es die erste Konstruktor nehmen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top