C# String Theory—String vs. StringBuilder
|Visual C# Tutorials|
Since C# strings are immutable, an existing string cannot be modified. So, if one tries to change a string either with the concatenation operator (
+) or with the
SubString methods, an entirely new string is created—leaving the original string intact.
Therefore, operations which would alter strings—instead—cause additional memory to be allocated. Memory is a scarce resource. And, memory allocations are expensive in terms of memory and performance. Consequently, sometimes
String class usage should be avoided.
StringBuilder class is designed for situations when one needs to work with a single string and make an arbitrary number of iterative changes to it. Many
StringBuilder class methods are the same as those of the
String class. However, the string content of a
StringBuilder class can be changed without the necessity of allocating additional memory. Thus, operations on the
StringBuilder class will be much faster than operations on the
String class in certain situations. Paradoxically, just the the opposite can be true in other situations.
String class is optimized and quite efficient for most cases. On the other hand, if strings must be modified, then the
String class can be a real resource waster. It must be appreciated that the
String class is really very intelligent in its memory handling in most everyday programming situations.
Visual C# Best Practices
- Instead of the
Stringclass, use the
StringBuilderclass when a single string must be modified repeatedly.