C#の文字列で{0}が見つかった場合、それはどういう意味ですか?


85

このような辞書では:

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}意味ですか?

回答:


181

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

String.Formatの場合、これは似ています。

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

「これはテストです。値は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を参照してください。ここでは、複合フォーマットについて説明しています。


25

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

例えば、

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

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


11

印刷したい値{0} {1}や、などに加えて、フォーマットを指定することができます。たとえば、{0,4}は4つのスペースに埋め込まれる値になります。

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


6

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

選択範囲を強調表示して(たとえば、ダブルクリックまたはドラッグ選択を実行)、ヒットすると、F1コンテキスト以外の文字列検索のみが実行されることに注意してください(これは、役立つものを見つけるのに苦労する傾向があります)。したがって、カーソルを内部の任意の場所に配置するようにしてください。強調表示せずに単語。

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


5

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

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


4

これは、%sフォーマット指定子が内で機能するのとよく似たパラメータのプレースホルダーですprintf

そこに追加のものを追加してフォーマットを決定することもできますが、数値変数を使用する方が理にかなっています(ここでの例)。


0

これは、オブジェクトの値をテキスト表現に変換し、その表現を文字列に埋め込むために、.NETFramework複合フォーマットと呼ばれるものです。結果の文字列は出力ストリームに書き込まれます。

オーバーロードされたConsole.WriteLineメソッド(String、Object)指定されたフォーマット情報を使用して、指定されたオブジェクトのテキスト表現と、それに続く現在の行末記号を標準出力ストリームに書き込みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.