C# | Stack<T>.TrimExcess Method with Examples

Stack represents a last-in, first out collection of object. It is used when you need a last-in, first-out access to items. When you add an item in the list, it is called pushing the item and when you remove it, it is called popping the item.
Stack<T>.TrimExcess Method is used to set the capacity to the actual number of elements in the Queue<T>, if that number is less than 90 percent of current capacity.

A stack is an unbounded data structure and there is no method available to calculate the capacity of Stack in C#. It is dynamic and depends on the system memory. This method is generally used in memory management of the large Stack.

Stack Properties:

  • The capacity of a Stack is the number of elements the Stack can hold. As elements are added to a Stack, the capacity is automatically increased as required through reallocation.
  • If Count is less than the capacity of the stack, Push is an O(1) operation. If the capacity needs to be increased to accommodate the new element, Push becomes an O(n) operation, where n is Count. Pop is an O(1) operation.
  • Stack accepts null as a valid value and allows duplicate elements.

Syntax:

public void TrimExcess ();

Note:

  • This method can be used to minimize a collection’s memory overhead if no new elements will be added to the collection.
  • To reset a Stack<T> to its initial state, call the Clear method before calling TrimExcess method.
  • Trimming an empty Stack<T> sets the capacity of the Stack<T> to the default capacity.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to set the capacity to the
// actual number of elements in the Stack
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a Stack of strings
        Stack<string> myStack = new Stack<string>();
  
        // Inserting elements into Stack
        myStack.Push("1st");
        myStack.Push("2nd");
        myStack.Push("3rd");
        myStack.Push("4th");
        myStack.Push("5th");
  
        // To display number of elements in Stack
        Console.WriteLine(myStack.Count);
  
        // removing all the elements from the stack
        myStack.Clear();
  
        // using TrimExcess method
        myStack.TrimExcess();
  
        // To display number of elements in Stack
        Console.WriteLine(myStack.Count);
    }
}

chevron_right


Output:

5
0

Reference:



My Personal Notes arrow_drop_up

In love with a semicolon because sometimes i miss it so badly)

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.