Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
How to find the Capacity of a StringBuilder in C#
The StringBuilder class in C# provides a Capacity property that returns the current capacity of the StringBuilder instance. The capacity represents the total number of characters that the StringBuilder can hold before it needs to allocate more memory.
Syntax
Following is the syntax to access the Capacity property −
int capacity = stringBuilder.Capacity;
How StringBuilder Capacity Works
StringBuilder automatically manages its internal buffer size. When you create a StringBuilder, it starts with a default capacity of 16 characters. If you exceed this capacity, StringBuilder automatically doubles the buffer size to accommodate more characters.
Using Default Capacity
When you create a StringBuilder without specifying capacity, it uses the default capacity of 16 characters −
using System;
using System.Text;
public class Demo {
public static void Main() {
StringBuilder strBuilder1 = new StringBuilder("Tim");
StringBuilder strBuilder2 = new StringBuilder("Tom");
StringBuilder strBuilder3 = new StringBuilder();
Console.WriteLine("Capacity of StringBuilder1 = " + strBuilder1.Capacity);
Console.WriteLine("Capacity of StringBuilder2 = " + strBuilder2.Capacity);
Console.WriteLine("Capacity of StringBuilder3 = " + strBuilder3.Capacity);
strBuilder2 = strBuilder3;
Console.WriteLine("Is StringBuilder3 equal to StringBuilder2? = " + strBuilder3.Equals(strBuilder2));
}
}
The output of the above code is −
Capacity of StringBuilder1 = 16 Capacity of StringBuilder2 = 16 Capacity of StringBuilder3 = 16 Is StringBuilder3 equal to StringBuilder2? = True
Using Custom Capacity
You can specify an initial capacity when creating a StringBuilder to optimize memory usage for your specific needs −
using System;
using System.Text;
public class Demo {
public static void Main() {
StringBuilder strBuilder1 = new StringBuilder("Amy");
StringBuilder strBuilder2 = new StringBuilder("Katie");
StringBuilder strBuilder3 = new StringBuilder();
StringBuilder strBuilder4 = new StringBuilder(5);
strBuilder2 = strBuilder3;
Console.WriteLine("Is StringBuilder3 equal to StringBuilder2? = " + strBuilder3.Equals(strBuilder2));
Console.WriteLine("StringBuilder1 capacity = " + strBuilder1.Capacity);
Console.WriteLine("StringBuilder2 capacity = " + strBuilder2.Capacity);
Console.WriteLine("StringBuilder3 capacity = " + strBuilder3.Capacity);
Console.WriteLine("StringBuilder4 capacity = " + strBuilder4.Capacity);
}
}
The output of the above code is −
Is StringBuilder3 equal to StringBuilder2? = True StringBuilder1 capacity = 16 StringBuilder2 capacity = 16 StringBuilder3 capacity = 16 StringBuilder4 capacity = 5
Capacity vs Length
| Property | Description | Example |
|---|---|---|
Capacity |
Maximum number of characters that can be stored without reallocation | 16, 32, 64, etc. |
Length |
Current number of characters actually stored | 3 for "Tim" |
Conclusion
The Capacity property of StringBuilder shows the current buffer size available for storing characters. Understanding capacity helps optimize memory usage and performance when working with large strings in C# applications.
