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
Capacity of a List in C#
The Capacity property of a List<T> in C# represents the total number of elements the internal array can hold before needing to be resized. This is different from the Count property, which represents the actual number of elements currently stored in the list.
Understanding capacity is important for performance optimization, as the list automatically doubles its capacity when more space is needed, which involves allocating a new array and copying existing elements.
Syntax
Following is the syntax to get the capacity of a list −
int capacity = listName.Capacity;
You can also set the capacity explicitly −
listName.Capacity = newCapacity;
Count vs Capacity
Using Capacity Property
Example
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args) {
List<string> list1 = new List<string>();
list1.Add("One");
list1.Add("Two");
list1.Add("Three");
list1.Add("Four");
list1.Add("Five");
Console.WriteLine("Elements in List1...");
foreach (string res in list1) {
Console.WriteLine(res);
}
Console.WriteLine("Capacity of List1 = " + list1.Capacity);
List<string> list2 = new List<string>();
list2.Add("India");
list2.Add("US");
list2.Add("UK");
list2.Add("Canada");
list2.Add("Poland");
list2.Add("Netherlands");
Console.WriteLine("Elements in List2...");
foreach (string res in list2) {
Console.WriteLine(res);
}
Console.WriteLine("Capacity of List2 = " + list2.Capacity);
Console.WriteLine("Is List2 equal to List1? = " + list2.Equals(list1));
}
}
The output of the above code is −
Elements in List1... One Two Three Four Five Capacity of List1 = 8 Elements in List2... India US UK Canada Poland Netherlands Capacity of List2 = 8 Is List2 equal to List1? = False
How Capacity Changes After Clear()
Example
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args) {
List<string> list = new List<string>();
list.Add("One");
list.Add("Two");
list.Add("Three");
list.Add("Four");
list.Add("Five");
Console.WriteLine("Elements in List...");
foreach (string res in list) {
Console.WriteLine(res);
}
Console.WriteLine("Count of elements in list = " + list.Count);
Console.WriteLine("Capacity of List = " + list.Capacity);
list.Clear();
Console.WriteLine("Count of elements in list (after Clear) = " + list.Count);
Console.WriteLine("Capacity of List (after Clear) = " + list.Capacity);
}
}
The output of the above code is −
Elements in List... One Two Three Four Five Count of elements in list = 5 Capacity of List = 8 Count of elements in list (after Clear) = 0 Capacity of List (after Clear) = 8
Setting Capacity Explicitly
Example
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args) {
List<int> numbers = new List<int>();
Console.WriteLine("Initial Capacity: " + numbers.Capacity);
numbers.Capacity = 20;
Console.WriteLine("After setting Capacity to 20: " + numbers.Capacity);
for (int i = 1; i <= 5; i++) {
numbers.Add(i);
}
Console.WriteLine("Count: " + numbers.Count + ", Capacity: " + numbers.Capacity);
numbers.TrimExcess();
Console.WriteLine("After TrimExcess - Count: " + numbers.Count + ", Capacity: " + numbers.Capacity);
}
}
The output of the above code is −
Initial Capacity: 0 After setting Capacity to 20: 20 Count: 5, Capacity: 20 After TrimExcess - Count: 5, Capacity: 5
Key Points
| Method/Property | Description |
|---|---|
list.Count |
Returns the actual number of elements in the list |
list.Capacity |
Returns the total number of elements the internal array can hold |
list.Clear() |
Removes all elements but keeps the same capacity |
list.TrimExcess() |
Reduces capacity to match the current count |
Conclusion
The Capacity property in C# Lists represents the internal array size and is always greater than or equal to Count. Understanding capacity helps optimize performance by pre-allocating space and avoiding frequent memory reallocations when adding many elements.
