動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
C#

パターン2: String.Concat / String.Join —配列を一発で結合

出典: C# 文字列結合のパフォーマンス完全比較(+ / Concat / StringBuilder / Format / 補間)パターン2: String.Concat / String.Join —配列を一発で結合

パターン2: String.Concat / String.Join —配列を一発で結合 (csharp)#c0352c6eb408
// ✅パターン2: String.Concat / String.Join
string[] parts = { "Hello", ", ", userName, "さん。" };
string greeting = String.Concat(parts);
 
// CSVの1行を組み立てる時の本命
var values = new[] { "1001", "鈴木太郎", "2026-05-08", "12500" };
string csvLine = String.Join(",", values);  // "1001,鈴木太郎,2026-05-08,12500"
 
// IEnumerable<T>も渡せる
var names = users.Select(u => u.Name);
string nameList = String.Join(", ", names);  // "alice, bob, carol"
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #c0352c6eb408
  • lines: 11
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「パターン2: String.Concat / String.Join —配列を一発で結合」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

7
C#
// ✅パターン1: +演算子(少数結合)
string greeting = "Hello, " + userName + "さん。今日もよろしくお願いします。";
string filePath = baseDir + "\\" + fileName;
未収録

パターン1: +演算子—静的な少数結合の本命

#d77b30cce8dc
C#
// ❌ NG:ループで+=は性能爆発
string result = "";
foreach (var row in dt.Rows.Cast<DataRow>())
{
未収録

パターン1: +演算子—静的な少数結合の本命

#6dedf46f8327
C#
// ✅パターン3: StringBuilder(ループ向き)
var sb = new StringBuilder();
foreach (var row in dt.Rows.Cast<DataRow>())
{
未収録

パターン3: StringBuilder —ループ・可変長の正解

#c688eae43693
C#
// ✅パターン4: String.Format(フォーマット指定向き)
string template = "{0}さん、{1:yyyy/MM/dd}の請求は{2:N0}円です。";
string message = String.Format(template, userName, dueDate, amount);
// → "鈴木太郎さん、2026/06/30の請求は12,500円です。"
未収録

パターン4: String.Format —フォーマット指定向き

#820dcac33498
C#
// ✅パターン5:文字列補間(C# 6以降)
string message = $"{userName}さん、{dueDate:yyyy/MM/dd}の請求は{amount:N0}円です。";
// → "鈴木太郎さん、2026/06/30の請求は12,500円です。"

未収録

パターン5:文字列補間$"..." — C# 6以降の本命

#db4711ab2df6
C#
// ✅パターン6: Stopwatchで性能比較(10万回ループ)
const int N = 100_000;
var data = Enumerable.Range(0, N).Select(i => $"row{i}").ToArray();

▶ 実行可

性能比較— 10万回ループのStopwatch実測

#c95994787d0a
図鑑トップ