あなたに50技を教えてASPを昇格させます.NETパフォーマンス(23):StringBuilderはすべての文字列接続のシーンに適用されません.String.Joinは

2443 ワード

(41)StringBuilder is NOT the answer for all string concatenation scenarios; String.Join could be
技41:
StringBuilderは、すべての文字列が接続されているシーンには適用されません.String.Joinは
Yes, if you are in a loop and adding to a string, then a StringBuilder *could* be most appropriate. However,the overhead of spinning up a StringBuilder instance makes the following pretty dumb:はい、ループに文字列を追加した場合、StringBuilderが最適かもしれません.しかし、StringBuilderインスタンスを作成するコストは、次のコードをかなり愚かにします.
 
var sb = new StringBuilder();

sb.Append(“Frankly, this is “);

sb.Append(notMoreEfficient);

sb.Append(“. Even if you are in a loop.”);

var whyNotJustConcat = sb.ToString();

 
Instead, use String.Join, which is typically more performant than spinning up a StringBuilder instance for a limited number of strings. It’s my go-to concat option:逆に有限数の文字列に対してStringを用いる.JoinはStringBuilderインスタンスを作成するよりも一般的に表現力があります.これは私の優先文字列接続方法です.
 
string key = String.Join(“ “, new String[]

{ “This”, “is”, “a”, “much”, “better”,

solution, “.”});

 
The first variable of ""can just be set to ""when you don’t want a delimiter. 区切り記号が欲しくない場合は、最初の変数の「」を「」に設定できます.
For loops that do a lot of, er, looping, sure, use a StringBuilder. ループの中でそうするのは余計です.うん、ループ、もちろんStringBuilderです.
Just don’t assume it’s the de facto solution in all, or even the majority of cases. My rule of thumb is to add strings together when I’ve got one to five of them (likewise with String.Format if it helps with legibility). For most other cases, I tend towards String.Join. Only when dealing with a loop that isn’t limited to about 10 iterations, especially one that really lets rip, do I spin up a StringBuilder.彼がすべての解決策ではないと思わない限り、多くの場合.私の原則は、私が1~5文字接続しているとき(同じString.Formatでも彼が読みやすさに役立つ場合)他の多くの場合、私はStringに傾いています.Join.1つの処理が10回の反復に限定されないサイクル、特に...、StringBuilderを使います.