2010-11-24 22 views
1

Ich arbeite mit einer Datei, die ich nicht geschrieben habe und ich versuche es nur zu verstehen. Ich verstehe, dass der folgende Ausschnitt nicht viel zu verstehen ist, aber ich bin nur verwirrt über einen kleinen Teil.Bedeutung von {0} \ {1} in C# Code

Ich frage mich nur für unten, was die "{0} \ {1}" bedeutet, wenn mir jemand helfen kann?

Das aktuelle Ergebnis des folgenden Codes gibt einen Dateipfad von c: \ Output \ Folder \ Filename.

private string GetOutputPathForTarget() 
     { 
      return string.Format("{0}\\{1}", outputDirectory, settings.Name); 
     } 

Wenn ich wollte, zum Beispiel ein anderes Unterverzeichnis auf diese Zeichenfolge hinzuzufügen, wäre es so einfach sein wie:

private string GetOutputPathForTarget() 
    { 
     return string.Format("{0}\\{1}", outputDirectory, settings.Name, "Images"); 
    } 
+1

Anders als die Bedeutung von "{0} \\ {1}" ist es wichtig zu beachten, dass Diese Methode sollte * nicht * verwendet werden, um Dateisystempfade zu erstellen. 'Path.Combine' sollte verwendet werden. –

+0

@ user289770 - Danke, das wird berücksichtigt! – 109221793

Antwort

3

Die Platzhalter für die Saiten sind Sie wollen in die konstante Zeichenfolge einzufügen an angegebene Positionen.

Werfen Sie einen Blick auf String.Format Method (String, Object[])

+0

Dank astander, wusste, dass es so etwas sein musste, ich war mir einfach nicht sicher über den richtigen Weg, um es zu googeln! – 109221793

+0

@TaraWalsh: Sie meinen, eine Google-Suche nach "C# string Format" hat Sie keine relevanten Ergebnisse erhalten? Nach was hast du gesucht, wenn ich fragen darf? – Patrick

4

"{0}\\{1}" ist ein format string-{0} Mittel ‚ToString hier das erste Argument einfügen‘, {1} das gleiche für das zweite Argument ist.

Wenn Sie eine andere Zeichenfolge einfügen wollten, würden Sie brauchen String.Format zu sagen, wo es einzufügen:

private string GetOutputPathForTarget() 
{ 
    return string.Format("{0}\\{1}\\{2}", outputDirectory, settings.Name, "Images"); 
} 

Aber dann würde ich empfehlen Sie Path.Combine anstelle

1

Dieses gut in MSDN beschrieben wird :

string.Format method

Beachten Sie, dass das zweite Beispiel keinen Sinn ergibt, da drei Parameter angegeben sind, aber nur zwei.

Normalerweise würden Sie string.Format verwenden, wenn Sie eine formatierte Zeichenfolgendarstellung für beliebige Objekte oder Werte wie Fließkommazahlen erhalten möchten.

Wir wissen nicht, welche Art von settings.Name aber wenn es vom Typ string dann der folgende Code entspricht:

return outputDirectory + "\\" + settings.Name; 

Oder:

return Path.Combine(outputDirectory, settings.Name); 

Letzteres hat den Vorteil, dass Sie Sie müssen sich keine Gedanken über den korrekten Pfadtrenner machen und ob ein Trennzeichen benötigt wird oder nicht.

6

Nein, das funktioniert nicht. Es müssen so viele Platzhalter wie optionale Argumente von string.Format sein.

Auf der anderen Seite sollten Sie Path.Combine verwenden, um Pfade zu erstellen. (Siehe this link)

1

um ein Unterverzeichnis hinzuzufügen, müssten Sie einen weiteren Satz von {} hinzufügen.

private string GetOutputPathForTarget() 
{ 
    return string.Format("{0}\\{1}\\{2}", outputDirectory, settings.Name, "Images"); 
} 
1

mit String.Format Sie ersetzt die {0} oder {1} mit den zusätzlichen Argumente, das ist eine zusammengesetzte Zeichenfolge zu schaffen.

Zum Beispiel - string.Format("{0}:{1}-{3}|{4}","a","b","c","d") würde "a:b-c|d"

Für Ihre letzte Forderung gleich, wäre die Lösung:

return string.Format("{0}\\{1}\\Images", outputDirectory, settings.Name); 
1

Ihr Beispiel funktioniert nicht! Arbeits Code wäre:

return string.Format("{0}\\{2}\\{1}", outputDirectory, settings.Name, "Images"); 

{n} von den n-ten Parametern in der string.Format Funktion ersetzt wird.

Aber für Gebäudedateinamen sollten Sie besser nutzen:

return System.IO.Path.Combine(part1, part2, part3); 

Mit freundlichen Grüßen, Markus