web-dev-qa-db-ja.com

1つの文字列への文字列のリスト

あなたが持っているとしましょう:

List<string> los = new List<string>();

このクレイジーな機能的な世界では、これらのいずれかがこれらを連結して1つの文字列を作成するのに最適であるこれらの日に住んでいます:

String.Join(String.Empty, los.ToArray());

StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));

string disp = los.Aggregate<string>((a, b) => a + b);

またはプレーンな古いStringBuilder foreach

またはより良い方法はありますか?

194
maxfridbe

私はオプションAに行きます:

String.Join(String.Empty, los.ToArray());

私の理由は、Joinメソッドがその目的のために書かれたためです。実際、Reflectorを見ると、実際に最適化するために安全でないコードが使用されていることがわかります。他の2つも動作しますが、Join関数はこの目的のために作成されたと思いますが、最も効率的だと思います。私は間違っているかもしれません...

.ToArray()なしの@Nuri YILMAZによると、これは.NET 4+です。

String.Join(String.Empty, los);
271
BFree
string.Concat(los.ToArray());

文字列を連結するだけの場合は、string.Join()の代わりにstring.Concat()を使用します。

50
Pent Ploompuu

.net 4.0を使用している場合、ソーター方法を使用できます。

String.Join<string>(String.Empty, los);
17
mnieto

String.Join()は非常に高速に実装されており、既に問題の文字列のコレクションがあるため、おそらく最良の選択です。とりわけ、「文字列のリストに参加しています!」と叫ぶ。いつもいい。

8
J Cooper
los.Aggregate((current, next) => current + "," + next);
6
landrady

私の投票は文字列です。

ラムダ評価と一時関数を作成する必要がなく、関数呼び出しが少なく、スタックのプッシュとポップが少なくなります。

4
Tom Ritter