Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
C#

C#: Use StringBuilder for Efficient String Concatenation

- 21.06.26 - ErcanOPAK

📝 String += Creates New Strings Every Time

Strings are immutable. StringBuilder is mutable. Faster concatenation, less memory. Essential for loops.

❌ String Concatenation (Slow)

string result = " ";
for (int i = 0; i < 10000; i++)
{
    result += i.ToString();  // New string each time!
}

✅ StringBuilder (Fast)

var sb = new StringBuilder();
for (int i = 0; i < 10000; i++)
{
    sb.Append(i);
}
string result = sb.ToString();

🎯 StringBuilder Methods

var sb = new StringBuilder();

// Append
sb.Append("Hello");
sb.Append(" ");
sb.Append("World");

// AppendLine (adds newline)
sb.AppendLine("Hello");
sb.AppendLine("World");

// AppendFormat
sb.AppendFormat("Hello {0}, you are {1} years old", name, age);

// Insert
sb.Insert(0, "Start: ");

// Replace
sb.Replace("World", "Universe");

// Remove
sb.Remove(0, 5);

// Clear
sb.Clear();

// Capacity
sb.Capacity = 1000;

// Length
int length = sb.Length;

💡 Performance Tips

  • Use StringBuilder for 10+ concatenations
  • Set initial capacity to avoid reallocation
  • String.Concat is optimized for small number of strings
  • String interpolation is preferred for simple strings

"Building HTML string with += took 5 seconds. StringBuilder took 0.1 seconds. 50x faster. Essential for performance."

— Performance Engineer

Related posts:

How to convert JSON to XML or XML to JSON in C#

String Interpolation, String Format, String Concat and String Builder in C#

Default Values for Data Types in C#

Post Views: 4

Post navigation

SQL: Use INSERT to Add Data to Tables
C#: Use Enum for Named Constants

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

July 2026
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031  
« Jun    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (960)
  • How to add default value for Entity Framework migrations for DateTime and Bool (898)
  • How to make theater mode the default for Youtube (857)
  • Get the First and Last Word from a String or Sentence in SQL (840)
  • How to select distinct rows in a datatable in C# (814)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (597)
  • Add Constraint to SQL Table to ensure email contains @ (582)
  • Average of all values in a column that are not zero in SQL (545)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (512)
  • Find numbers with more than two decimal places in SQL (460)

Recent Posts

  • C#: Use Using Statements for Resource Management
  • C#: Use Lambda Expressions for Concise Code
  • SQL: Use GROUP BY for Data Aggregation
  • .NET Core: Master Routing for Clean URLs
  • Git: Use Reset to Undo Local Changes
  • Ajax: Use Axios for HTTP Requests
  • JavaScript: Understand Hoisting
  • HTML: Use Web Storage for Client-Side Data
  • CSS: Use Filter Effects for Visual Magic
  • Windows 11: Unlock God Mode for All Settings

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (960)
  • How to add default value for Entity Framework migrations for DateTime and Bool (898)
  • How to make theater mode the default for Youtube (857)
  • Get the First and Last Word from a String or Sentence in SQL (840)
  • How to select distinct rows in a datatable in C# (814)

Recent Posts

  • C#: Use Using Statements for Resource Management
  • C#: Use Lambda Expressions for Concise Code
  • SQL: Use GROUP BY for Data Aggregation
  • .NET Core: Master Routing for Clean URLs
  • Git: Use Reset to Undo Local Changes

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com