Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 스택(Stack)에서 모든 개체 제거하기 – Clear() 메서드 활용법

C#에서 Stack<T>에 담긴 모든 개체를 한 번에 제거하려면 Clear() 메서드를 호출하면 됩니다. Clear() 메서드는 스택 내부의 모든 요소를 삭제하고 Count 속성을 0으로 초기화합니다.

예제 1: 문자열 스택 비우기

using System;
using System.Collections.Generic;
public class Demo {
    public static void Main(){
        Stack<string> stack = new Stack<string>();
        stack.Push("A");
        stack.Push("B");
        stack.Push("C");
        stack.Push("D");
        stack.Push("E");
        stack.Push("F");
        stack.Push("G");
        stack.Push("H");
        Console.WriteLine("요소 개수 = " + stack.Count);
        Console.WriteLine("스택에 저장된 요소...");
        foreach (string res in stack){
            Console.WriteLine(res);
        }
        stack.Clear();
        Console.Write("요소 개수(제거 후) = " + stack.Count);
    }
}

실행 결과

요소 개수 = 8
스택에 저장된 요소...
H
G
F
E
D
C
B
A
요소 개수(제거 후) = 0

코드 설명

Push() 메서드로 A부터 H까지 8개의 문자열을 스택에 추가한 뒤 Count 속성으로 현재 요소 개수를 확인합니다. 스택은 LIFO(후입선출, Last-In-First-Out) 구조이므로 가장 마지막에 넣은 H부터 역순으로 출력됩니다. 이후 Clear() 메서드를 호출하면 모든 요소가 제거되어 Count 값이 0으로 변경됩니다.

예제 2: 정수 스택 비우기

using System;
using System.Collections.Generic;
public class Demo {
    public static void Main(){
        Stack<int> stack = new Stack<int>();
        stack.Push(10);
        stack.Push(20);
        stack.Push(30);
        stack.Push(40);
        stack.Push(50);
        stack.Push(60);
        stack.Push(70);
        stack.Push(80);
        stack.Push(90);
        stack.Push(100);
        Console.WriteLine("요소 개수 = " + stack.Count);
        Console.WriteLine("스택에 저장된 요소...");
        foreach (int res in stack){
            Console.WriteLine(res);
        }
        stack.Clear();
        Console.Write("요소 개수(제거 후) = " + stack.Count);
    }
}

실행 결과

요소 개수 = 10
스택에 저장된 요소...
100
90
80
70
60
50
40
30
20
10
요소 개수(제거 후) = 0

Clear() 메서드 핵심 정리

  • 동작: Stack<T>에 저장된 모든 개체를 제거합니다.
  • 시간 복잡도: O(n), 여기서 n은 스택의 요소 수입니다.
  • Count 변화: 호출 후 Count 속성은 항상 0이 됩니다.
  • 참고: 내부 버퍼의 용량(Capacity)은 그대로 유지될 수 있으며, 참조 형식 요소는 이후 가비지 컬렉터가 회수할 수 있습니다.