[c#] C# 제네릭의 개념
class Stack<T>
{
    private T[] elements;
    private int index = 0;

    public Stack(int capacity)
    {
        elements = new T[capacity];
    }

    public void Push(T item)
    {
        elements[index++] = item;
    }

    public T Pop()
    {
        return elements[--index];
    }
}

public class Program
{
    public static void Main()
    {
        Stack<int> intStack = new Stack<int>(5);
        intStack.Push(1);
        intStack.Push(2);
        intStack.Push(3);
        Console.WriteLine(intStack.Pop());
        Console.WriteLine(intStack.Pop());

        Stack<string> stringStack = new Stack<string>(5);
        stringStack.Push("A");
        stringStack.Push("B");
        stringStack.Push("C");
        Console.WriteLine(stringStack.Pop());
        Console.WriteLine(stringStack.Pop());
    }
}

위 예제에서 Stack<T>는 제네릭 클래스로, T는 형식 파라미터입니다. 이것은 정수형이나 문자열 등 다양한 데이터 형식에 대해 Stack을 생성할 수 있도록 합니다.

제네릭은 컬렉션 및 LINQ와 같은 표준 라이브러리의 일부 요소도 구현한다는 점에서 C#의 주요한 기능 중 하나입니다.

더 자세한 정보는 Microsoft 공식 문서를 참조하세요.