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

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

出典: C# 文字列結合のパフォーマンス完全比較(+ / Concat / StringBuilder / Format / 補間)パターン3: StringBuilder —ループ・可変長の正解

パターン3: StringBuilder —ループ・可変長の正解 (csharp)#c688eae43693
// ✅パターン3: StringBuilder(ループ向き)
var sb = new StringBuilder();
foreach (var row in dt.Rows.Cast<DataRow>())
{
    sb.Append(row["Name"]);
    sb.Append(",");
    sb.Append(row["Amount"]);
    sb.AppendLine();
}
string result = sb.ToString();
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #c688eae43693
  • lines: 10
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「パターン3: StringBuilder —ループ・可変長の正解」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

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#
// ✅パターン2: String.Concat / String.Join
string[] parts = { "Hello", ", ", userName, "さん。" };
string greeting = String.Concat(parts);

未収録

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

#c0352c6eb408
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
図鑑トップ