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

小ネタ: StringBuilder容量初期値で更に速くする

出典: C# 文字列結合のパフォーマンス完全比較(+ / Concat / StringBuilder / Format / 補間)小ネタ: StringBuilder容量初期値で更に速くする

小ネタ: StringBuilder容量初期値で更に速くする (csharp)#fdb962bddf1b
// ✅パターン7: StringBuilder容量初期値(再アロケート抑制)
// 1万行×平均50文字= 50万文字を見越して先に確保
var sb = new StringBuilder(500_000);
foreach (var row in dt.Rows.Cast<DataRow>())
{
    sb.Append(row["Name"]).Append(",").AppendLine(row["Amount"].ToString());
}
string csv = sb.ToString();
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #fdb962bddf1b
  • lines: 8
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「小ネタ: 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#
// ✅パターン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
図鑑トップ