web-dev-qa-db-ja.com

C#の文字列で{0}はどういう意味ですか?

次のような辞書で:

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"]);

出力は次のとおりです。

キー= "rtf"値= wordpad.exe

{0}はどういう意味ですか?

79
Ricardo

書式設定された文字列を印刷しています。 {0}は、フォーマット文字列の後に最初のパラメーターを挿入することを意味します。この場合、キー「rtf」に関連付けられた値。

同様のString.Formatの場合、次のようなものがあれば

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

文字列を作成します。「Thisis a test。値は42」。

式を使用して、値を複数回出力することもできます。

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

「Fib:1123

詳細は http://msdn.Microsoft.com/en-us/library/txafckwd.aspx をご覧ください。これは複合フォーマットについて説明しています。

173

これは文字列のプレースホルダーです。

例えば、

string b = "world.";

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

次の出力が生成されます。

Hello world.

また、必要な数のプレースホルダーを持つことができます。これはString.Formatでも機能します:

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

Console.WriteLine(a);

そして、あなたはまだ非常に同じ出力を得るでしょう。

23
M4dRefluX

印刷する値、{0} {1}などに加えて、形式を指定できます。たとえば、{0,4}は、4つのスペースに埋め込まれる値になります。

組み込みの書式指定子が多数あり、さらに、独自の書式指定子を作成できます。適切なチュートリアル/リストについては、C#での文字列の書式設定を参照してください。また、FAQ here があります。

11
Muad'Dib

将来の参照のために、Visual Studioでは、メソッド名(たとえば、WriteLine)にカーソルを置いて、押すことができます。 F1 そのコンテキストに関するヘルプを表示します。掘り下げてみると、この場合String.Format()が見つかり、役立つ情報がたくさんあります。

選択範囲を強調表示(たとえば、ダブルクリックまたはドラッグ選択)して、 F1 非コンテキスト文字列検索(有用なものを見つけるのが面倒な傾向がある)のみを行うため、カーソルを強調表示せずにWord内の任意の場所に配置するようにしてください。

これは、クラスやその他のタイプのドキュメントにも役立ちます。

6
Rob Parker

これは、最初のパラメーターのプレースホルダーです。このパラメーターは、「wordpad.exe」と評価されます。

追加のパラメーターがある場合は、{1}などを使用します。

5
Bravax

%s書式指定子がprintf内で機能するのと同様に、パラメーターのプレースホルダーです。

そこに追加のものを追加してフォーマットを決定することもできますが、数値変数( examples here )を使用するとより意味があります。

4
Mat

これが.NET Frameworkの Composite Formatting と呼ばれるもので、オブジェクトの値をテキスト表現に変換し、その表現を文字列に埋め込みます。結果の文字列は出力ストリームに書き込まれます。

オーバーロードされた Console.WriteLineメソッド(String、Object) 指定された形式情報を使用して、指定されたオブジェクトのテキスト表現に続いて現在の行終端文字を標準出力ストリームに書き込みます。

0