Was bedeutet {0}, wenn es in einer Zeichenfolge in C # gefunden wird?

84

In einem Wörterbuch wie diesem:

Dictionary<string, string> openWith = new Dictionary<string, string>();

openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");

Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

Die Ausgabe ist:

Für Key = "rtf" value = wordpad.exe

Was bedeutet das {0}?

Ricardo
quelle

Antworten:

177

Sie drucken eine formatierte Zeichenfolge. Die {0} bedeutet, dass der erste Parameter nach der Formatzeichenfolge eingefügt wird. in diesem Fall der dem Schlüssel "rtf" zugeordnete Wert.

Für String.Format, das ähnlich ist, wenn Sie so etwas hatten

//            Format string                    {0}           {1}
String.Format("This {0}.  The value is {1}.",  "is a test",  42 ) 

Sie würden eine Zeichenfolge erstellen "Dies ist ein Test . Der Wert ist 42 ".

Sie können auch Ausdrücke verwenden und Werte mehrmals ausdrucken:

//            Format string              {0} {1}  {2}
String.Format("Fib: {0}, {0}, {1}, {2}", 1,  1+1, 1+2) 

ergibt "Fib: 1 , 1 , 2 , 3 "

Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/txafckwd.aspx , in dem es um die zusammengesetzte Formatierung geht.

Daniel LeCheminant
quelle
25

Es ist ein Platzhalter in der Zeichenfolge.

Beispielsweise,

string b = "world.";

Console.WriteLine("Hello {0}", b);

würde diese Ausgabe erzeugen:

Hello world.

Sie können auch so viele Platzhalter haben, wie Sie möchten. Dies funktioniert auch bei String.Format:

string b = "world.";
string a = String.Format("Hello {0}", b);

Console.WriteLine(a);

Und Sie würden immer noch die gleiche Ausgabe erhalten.

Steven DeWitt
quelle
11

Zusätzlich zu dem Wert, den Sie drucken möchten {0} {1}, usw. können Sie ein Format angeben. Beispielsweise {0,4}wird ein Wert mit vier Leerzeichen aufgefüllt.

Es gibt eine Reihe integrierter Formatspezifizierer, und außerdem können Sie Ihre eigenen erstellen. Ein anständiges Tutorial / eine anständige Liste finden Sie unter String-Formatierung in C # . Außerdem gibt es eine FAQ hier .

Muad'Dib
quelle
6

Zum späteren Nachschlagen können Sie in Visual Studio versuchen, den Cursor in den Methodennamen (z. B. WriteLine) zu setzen, und drücken F1, um die Hilfe zu diesem Kontext aufzurufen . Das Herumgraben sollte Sie dann String.Format()in diesem Fall mit vielen hilfreichen Informationen finden.

Beachten Sie, dass das Hervorheben einer Auswahl (z. B. Doppelklicken oder Ziehen per Auswahl) und das Schlagen F1nur eine Suche nach nicht kontextbezogenen Zeichenfolgen bewirkt (was dazu neigt, hilfreiche Informationen zu finden). Stellen Sie daher sicher, dass Sie den Cursor einfach an einer beliebigen Stelle im Inneren positionieren das Wort ohne es hervorzuheben.

Dies ist auch hilfreich für die Dokumentation von Klassen und anderen Typen.

Rob Parker
quelle
5

Es ist ein Platzhalter für den ersten Parameter, der in Ihrem Fall "wordpad.exe" ergibt.

Wenn Sie einen zusätzlichen Parameter hätten, würden Sie {1}usw. verwenden.

Bravax
quelle
4

Es ist ein Platzhalter für einen Parameter, ähnlich wie der %sFormatbezeichner printf.

Sie können dort zusätzliche Elemente hinzufügen, um auch das Format zu bestimmen. Dies ist jedoch bei einer numerischen Variablen sinnvoller ( Beispiele hier ).

Matte
quelle
0

Dies haben wir als zusammengesetzte Formatierung von .NET Framework bezeichnet, um den Wert eines Objekts in seine Textdarstellung zu konvertieren und diese Darstellung in eine Zeichenfolge einzubetten. Die resultierende Zeichenfolge wird in den Ausgabestream geschrieben.

Die überladene Console.WriteLine-Methode (Zeichenfolge, Objekt) Schreibt die Textdarstellung des angegebenen Objekts, gefolgt vom aktuellen Zeilenabschluss, unter Verwendung der angegebenen Formatinformationen in den Standardausgabestream.

Sujith Karivelil
quelle