質問

私た。Netプログラミングの日を使って文字列になります。形式()のみにより複雑な文字列concatenationsとは、例えば、コンパイルの文字列として

問題までをお客様234日2/2/2002支払id55543.

今回はこれを使用文字列になります。形式を用いることにより、ほぼすべての文字列連結していますし、また簡単なものなどprefixingを文字列です。

Console.WriteLine(string.Format("\t\t{0}", myString));

が可能なオーバヘッド。どう利用の + オペレーターから簡単に実現されるのでしょう。

自分の意見。

役に立ちましたか?

解決

単純な文字列concatenationsをご利用 + ます。ではより明確に簡単なものを必要としない形式です。

より複雑な文字列として一定の形式においた方が、構造全体の文字列をプレースホルダーの入力を使用 String.Format.

とりあるオーバーヘッド。 String.Format 使用StringBuilderの下にカバーします。単純な文字列concatenationsがもっと早くこのシナリオ.カップルでのベンチマークやブログの投稿は、今できることが容易です。もちろんすべてによって異なります。小さな文字列concatsが起こってループを繰り返し利用 String.Format が目立ったより単純 + concat.の場合のルール 文字列のループの典型例である。 StringBuilder 関連問題concat対StringBuilderできます。

編集: を明らかにしてい少し目的: String.Format("{0}{1}", a, b) ではありません設定します。では a + b.残念ながら私はそのような事例生産コードなどの見文字列になります。形式になってくるでしょう必要構造であることによってではなく、直concat.

大藤、この電話番号: "(" + area + ") " + number + " x" + extension -がぎっと簡単なことではないので修正すこの場合、文字列になります。形式が好ましい: String.Format("({0}) {1} x{2}", area, number, extension).このままだと些細な例でご利用いただけます。いかねます。

他のヒント

私もそれが途中で+ 'sの文字列を起動および停止よりも、コードを読みやすく生産と組み合わせることするために、2つ以上の文字列/値を必要とするほとんどの操作に使用String.Formatの傾向にあります。

拡大するには、

string value = string.Format("Hello {0}", user.username);

がはるかに読みやすく、拡張性よりも

string value = "Hello" + user.username

たとえば、システム・アップグレードとして最後にログインした日時を追加したい場合、あなたは、単に次の

にコードを拡張することができ
string value = string.Format("Hello {0}, you last logged in {1}", user.username, user.lastLogin);

簡単に連結での効率化のためにまいります。使用 String.Format() きく複雑でコードを読みやすくなりました。

私個人と同じことを行ない、との思呼んはライブラリリファレンスを参照。


Clarrification

通常の文字列の連結う "Hello " + "World!"; 混雑して待たされること、StringBuilder.自例形式での出力用の文字列によるprependingタブが二つ...私が考えているように設定します。

の間には大きな違いがありフォーマットと連結した---とくという方のために、し出せない場合も考えられます。


String.Format() 使用StringBuilderの内部での連結は今までより効率的ではない通常の文字列を連結します。

により変更する場合がございえおか Console.WriteLine() に対応できるフォーマットもあり(無 String.Format() 必要な):

Console.WriteLine("\t\t{0}", myString);

私はもっと私が+に変更する回string.Format(連結)を使用する必要があれば私のルールがある。

string a = "Something: " + x;   // ok

string b = "Something: " + x + " something else"; // change it to a string.Format
string bB = string.Format("Something: {0} something else", x); // much nicer to read

string c = "Something: " + x + " " + y + " " + z;  // Yuck
string cC = string.Format("Something: {0} {1} {2}", x, y, x);  // Much nicer

私は誰かの可能性が高いというデータを提供する、パフォーマンスのことは知らないが、私の気持ちはString.Formatのは、あなたの設定ファイル(またはデータベースのフィールドやリソースファイルに書式文字列を入れたい場合は移動するための方法であるということですまたは何でも)。あなたは、スペースに、タブの数、スイッチを微調整したい場合はその方法は、区切り文字を追加、または何が、あなたは再コンパイルする必要はありません。

私はちょうどプレフィックスに必要とするか、または指定した文字列をサフィックスするとき代わりString.ConcatString.Formatを使用する傾向があります。私はその後、Concat演算子を使用する+methodの明示的な呼び出しを好む、あなたはすでにString.Formatを使用している場合には、1つのキーストロークを切り替えるだけです。

また、高速String.ConcatよりもなるIIRC、String.Format方法は演算子を使用した場合と同じになります。

私は代わりに静的文字列メソッドの拡張メソッドを使用しているが、

私はほとんど常に、形式を使用します。私は、理解しやすい簡単に変更する、および維持するために、一般的に容易にそれを見つけます。それがない方法で連結順序の問題を導入していないので、それはまた、より簡単にローカライズを行うことができます。

正直なところ、これが良く見える?

"You have {0} widgets.".Frmt(widgetCount)
"You have " + widgetCount.ToString() + " widgets."
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top