2010-11-24 8 views
1

私が書いていないファイルで作業しています。私は以下のスニペットはあまり行かないことを理解していますが、私はちょうど小さな部分について混乱しています。C#コードの{0} \ {1}の意味

「{0} \ {1}」という意味は、誰かが私を助けることができますか?

以下のコードの結果は、c:\ Output \ Folder \ Filenameのファイルパスになります。

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

私が望んでいた場合には、例えば、それはのように単純になり、この文字列に別のサブディレクトリを追加します。

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

を、あることに注意することが重要ですこのメソッドは、ファイルシステムパスを構築するために*使用されてはいけません。 'Path.Combine'を使うべきです。 –

+0

@ user289770 - ありがとう、それを考慮に入れる! – 109221793

答えて

3

はそれらは、あなたがで一定の文字列に挿入したい文字列のプレースホルダーです指定された位置。

String.Format Method (String, Object[])

+0

ありがとうございました。私はちょうどそのようなものでなければならないことを知っていました。 – 109221793

+0

@TaraWalsh: "C#string format"のgoogle検索で関連する結果が得られなかったということですか?もし私が聞くことができたら、あなたは何を探しましたか? – Patrick

4

"{0}\\{1}"を見てくださいがformat stringある - {0}手段「ここで最初の引数ToStringを挿入」、{1}は、第二引数でも同じです。

あなたが別の文字列を挿入したい場合、あなたはそれをどこに挿入するString.Formatを指示する必要があります:

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

しかし、私は非常にあなたがこれはよくMSDNで説明されて代わりに

1

Path.Combineを使用することをお勧めします:

string.Format method

3つのパラメータが指定されているので2番目のサンプルは意味をなさないが、2つしか使用されないことに注意してください。

浮動小数点数などの任意のオブジェクトまたは値の書式付き文字列表現を取得する場合は、通常、string.Formatを使用します。

我々はsettings.Nameの種類を知りませんが、それはタイプstringであるならば、次のコードは同等です:

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

または:

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

を、後者は、あなた利点を持っています正しいパス区切りとセパレータが必要かどうかについて心配する必要はありません。

6

いいえ、これは機能しません。オプションの引数としては、string.Formatと同じくらい多くのプレースホルダが必要です。

一方、パスを構築するには、Path.Combineを使用する必要があります。 (this linkを参照)

1

サブディレクトリを追加するには、{}の別のセットを追加する必要があります。String.Format

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

これは合成文字列を作成し、追加の引数を持つ{0}又は{1}を置き換えます。例えば

- string.Format("{0}:{1}-{3}|{4}","a","b","c","d")あなたの最後の要件について"a:b-c|d"

に等しくなるが、解決策は次のようになります。

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

あなたの例が動作しません!作業コードは次のとおりです。

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

{n}は、string.Format関数のn番目のパラメータに置き換えられます。

しかし、あなたがより良い使用する必要があります建物のファイル名の:

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

種類よろしく、 "{1} \\ {0}" の意味以外 マルクス

関連する問題