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 MaxCapacity of a StringBuilder in C#?
The MaxCapacity property of a StringBuilder in C# returns the maximum number of characters that the StringBuilder can hold. This is a read-only property that represents the theoretical upper limit for the StringBuilder's capacity.
In most cases, the MaxCapacity is set to Int32.MaxValue (2,147,483,647), which is the maximum value for a 32-bit signed integer. However, you can specify a custom maximum capacity when creating a StringBuilder using specific constructor overloads.
Syntax
Following is the syntax to access the MaxCapacity property −
int maxCapacity = stringBuilder.MaxCapacity;
Following is the syntax to create a StringBuilder with a custom MaxCapacity −
StringBuilder sb = new StringBuilder(initialCapacity, maxCapacity);
Using Default MaxCapacity
When you create a StringBuilder without specifying a maximum capacity, it uses the default maximum capacity −
using System;
using System.Text;
public class Demo {
public static void Main(String[] args) {
StringBuilder strBuilder1 = new StringBuilder("Amy");
StringBuilder strBuilder2 = new StringBuilder("Katie");
StringBuilder strBuilder3 = new StringBuilder();
StringBuilder strBuilder4 = new StringBuilder(5);
Console.WriteLine("StringBuilder1 capacity = " + strBuilder1.Capacity);
Console.WriteLine("StringBuilder1 maximum capacity = " + strBuilder1.MaxCapacity);
Console.WriteLine("StringBuilder2 capacity = " + strBuilder2.Capacity);
Console.WriteLine("StringBuilder2 maximum capacity = " + strBuilder2.MaxCapacity);
Console.WriteLine("StringBuilder3 capacity = " + strBuilder3.Capacity);
Console.WriteLine("StringBuilder3 maximum capacity = " + strBuilder3.MaxCapacity);
Console.WriteLine("StringBuilder4 capacity = " + strBuilder4.Capacity);
Console.WriteLine("StringBuilder4 maximum capacity = " + strBuilder4.MaxCapacity);
}
}
The output of the above code is −
StringBuilder1 capacity = 16 StringBuilder1 maximum capacity = 2147483647 StringBuilder2 capacity = 16 StringBuilder2 maximum capacity = 2147483647 StringBuilder3 capacity = 16 StringBuilder3 maximum capacity = 2147483647 StringBuilder4 capacity = 5 StringBuilder4 maximum capacity = 2147483647
Using Custom MaxCapacity
You can specify a custom maximum capacity to limit how large the StringBuilder can grow −
using System;
using System.Text;
public class Demo {
public static void Main(String[] args) {
StringBuilder strBuilder1 = new StringBuilder(10, 50);
StringBuilder strBuilder2 = new StringBuilder("Hello", 100);
Console.WriteLine("StringBuilder1 initial capacity = " + strBuilder1.Capacity);
Console.WriteLine("StringBuilder1 maximum capacity = " + strBuilder1.MaxCapacity);
Console.WriteLine("StringBuilder2 capacity = " + strBuilder2.Capacity);
Console.WriteLine("StringBuilder2 maximum capacity = " + strBuilder2.MaxCapacity);
Console.WriteLine("StringBuilder2 length = " + strBuilder2.Length);
}
}
The output of the above code is −
StringBuilder1 initial capacity = 10 StringBuilder1 maximum capacity = 50 StringBuilder2 capacity = 16 StringBuilder2 maximum capacity = 100 StringBuilder2 length = 5
Capacity vs MaxCapacity
| Property | Description | Modifiable |
|---|---|---|
| Capacity | Current allocated buffer size | Yes (can be increased or decreased) |
| MaxCapacity | Maximum possible buffer size | No (read-only, set at creation) |
| Length | Current number of characters | Yes (can be modified) |
Practical Example with Capacity Expansion
using System;
using System.Text;
public class Demo {
public static void Main(String[] args) {
StringBuilder sb = new StringBuilder("Hello", 20);
Console.WriteLine("Initial state:");
Console.WriteLine("Length = " + sb.Length);
Console.WriteLine("Capacity = " + sb.Capacity);
Console.WriteLine("MaxCapacity = " + sb.MaxCapacity);
sb.Append(" World! This is a longer string.");
Console.WriteLine("\nAfter appending:");
Console.WriteLine("Length = " + sb.Length);
Console.WriteLine("Capacity = " + sb.Capacity);
Console.WriteLine("MaxCapacity = " + sb.MaxCapacity);
Console.WriteLine("Content: " + sb.ToString());
}
}
The output of the above code is −
Initial state: Length = 5 Capacity = 16 MaxCapacity = 20 After appending: Length = 37 MaxCapacity = 20 Content: Hello World! This is a longer string.
Conclusion
The MaxCapacity property returns the maximum number of characters a StringBuilder can hold. By default, it's set to Int32.MaxValue, but you can specify a custom limit during construction. Understanding MaxCapacity helps in memory management and prevents unexpected capacity expansion in memory-constrained scenarios.
