inserimenti C # stringa confuso con parametri opzionali
-
22-08-2019 - |
Domanda
Sono abbastanza nuovo per C #, e cercando di capire inserimenti di stringa (vale a dire "some {0} string", toInsert
), e sono imbattuto in un problema che non mi aspettavo ...
Nel caso in cui si dispone di due costruttori:
public MyClass(String arg1) { ... }
public MyClass(String arg1, String arg2) { ... }
E 'possibile per me di utilizzare il primo costruttore con un inserimento stringa?
...
toInsert = "def"
myClass = new MyClass("abc{0}ghi", toInsert)
...
In alternativa sarà C # interpretare questo come il secondo costruttore e passare un "abc{0}ghi"
letterale come primo argomento?
Soluzione
Sì, questo sarà interpretato come solo un secondo parametro.
Il comportamento descritto si chiama formattazione di stringhe e tutto ciò che accetta stringhe in questo stile utilizza string.Format () in background. Vedere la documentazione di tale metodo per i dettagli.
Per ottenere il comportamento desiderato, utilizzare questo codice:
myClass = new MyClass(string.Format("abc{0}ghi", toInsert));
Altri suggerimenti
Basta fare:
public MyClass(string format, params object[] args)
{
this.FormattedValue = string.Format(format, args);
}
In alternativa sarà C # interpretare questo come il secondo costruttore e passare un letterale "Abc {0} ghi" come primo argomento?
Questa è la risposta giusta. Penso che se si utilizza String.Format ( "abc {0} ghi", toInsert) allora ci vorrà il primo costruttore