C#에서 Stack<T> 컬렉션을 배열로 변환할 때는 ToArray() 메서드를 사용합니다. 이 메서드는 스택의 모든 요소를 새로운 배열에 복사하며, 요소 순서는 스택의 후입선출(LIFO) 구조를 그대로 따릅니다. 즉, 가장 마지막에 Push된 요소가 배열의 첫 번째 요소가 됩니다.
예제 1: 문자열 스택 변환
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
Stack<string> stack = new Stack<string>();
stack.Push("AB");
stack.Push("CD");
stack.Push("FG");
stack.Push("KL");
Console.WriteLine("Array...");
foreach(string i in stack){
Console.WriteLine(i);
}
string[] strArr = stack.ToArray();
Console.WriteLine("Convert Stack to Array...");
foreach(string i in strArr){
Console.WriteLine(i);
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Array... KL FG CD AB Convert Stack to Array... KL FG CD AB
예제 2: 정수 스택 변환
이번에는 정수형(int) 스택을 배열로 변환하는 또 다른 예제를 살펴보겠습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
Stack<int> stack = new Stack<int>();
stack.Push(250);
stack.Push(500);
stack.Push(750);
stack.Push(1000);
stack.Push(1200);
stack.Push(1500);
Console.WriteLine("Array...");
foreach(int i in stack){
Console.WriteLine(i);
}
int[] intArr = stack.ToArray();
Console.WriteLine("Convert Stack to Array...");
foreach(int i in intArr){
Console.WriteLine(i);
}
}
}출력 결과
실행 결과는 다음과 같습니다.
Array... 1500 1200 1000 750 500 250 Convert Stack to Array... 1500 1200 1000 750 500 250
핵심 정리
- ToArray() 메서드는 스택의 모든 요소를 동일한 순서대로 새 배열에 복사합니다.
- 원본 스택은 변경되지 않으며, 항상 가장 최근에 Push된 요소부터 순서대로 저장됩니다.
- 반환되는 배열의 자료형은 스택의 제네릭 타입(T)과 일치합니다.