반응형
컬렉션 소개
C#에서 컬렉션은 여러 데이터를 저장하고 처리하는 데 사용되는 클래스들입니다. .NET Framework는 여러 종류의 컬렉션을 제공합니다. 그 중 가장 많이 사용되는 것들은 `List`, `Dictionary<TKey, TValue>`, `Queue`, `Stack`입니다. 각 컬렉션의 사용법을 알아보겠습니다.
List
`List`는 동적으로 크기를 조정하는 배열로, 인덱스를 통해 데이터에 접근할 수 있습니다.
List numbers = new List();
numbers.Add(10);
numbers.Add(20);
numbers.Add(30);
Console.WriteLine("List items:");
foreach(var number in numbers)
{
Console.WriteLine(number);
}
Dictionary<TKey, TValue>
`Dictionary<TKey, TValue>`는 키와 값을 쌍으로 저장하는 컬렉션입니다. 각 항목은 고유한 키로 접근됩니다.
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["John"] = 25;
ages["Alice"] = 30;
Console.WriteLine("Dictionary items:");
foreach(var entry in ages)
{
Console.WriteLine($"{entry.Key}: {entry.Value}");
}
Queue
`Queue`는 FIFO(First In, First Out) 구조를 따릅니다. 데이터가 먼저 들어간 순서대로 나옵니다.
Queue queue = new Queue();
queue.Enqueue("A");
queue.Enqueue("B");
queue.Enqueue("C");
Console.WriteLine("Queue items:");
while(queue.Count > 0)
{
Console.WriteLine(queue.Dequeue());
}
Stack
`Stack`는 LIFO(Last In, First Out) 구조를 따릅니다. 가장 나중에 들어간 데이터가 가장 먼저 나옵니다.
Stack stack = new Stack();
stack.Push("A");
stack.Push("B");
stack.Push("C");
Console.WriteLine("Stack items:");
while(stack.Count > 0)
{
Console.WriteLine(stack.Pop());
}
IEnumerable, ICollection 인터페이스
`IEnumerable`는 컬렉션을 순차적으로 열거할 수 있도록 정의된 인터페이스입니다. 모든 컬렉션은 `IEnumerable`을 구현하고 있어, `foreach`문을 사용할 수 있습니다.
IEnumerable numbers = new List { 1, 2, 3, 4, 5 };
foreach(var number in numbers)
{
Console.WriteLine(number);
}
`ICollection`은 `IEnumerable`의 상속을 받으며, 컬렉션의 크기, 추가, 삭제 등의 기능을 제공합니다. `List`와 같은 클래스는 `ICollection`을 구현합니다.
제네릭 클래스와 메서드
제네릭은 타입에 구애받지 않고 데이터를 처리할 수 있는 기능을 제공합니다. 제네릭 클래스와 메서드는 다양한 데이터 타입에 대해 재사용 가능한 코드를 작성할 수 있도록 해줍니다.
제네릭 클래스
public class Box
{
private T value;
public Box(T value)
{
this.value = value;
}
public T GetValue()
{
return value;
}
}
class Program
{
static void Main()
{
Box intBox = new Box(100);
Box strBox = new Box("Hello World");
Console.WriteLine(intBox.GetValue()); // 100
Console.WriteLine(strBox.GetValue()); // Hello World
}
}
제네릭 메서드
public class Utility
{
public static T GetFirstElement(T[] array)
{
return array[0];
}
}
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5 };
string[] names = { "John", "Alice", "Bob" };
Console.WriteLine(Utility.GetFirstElement(numbers)); // 1
Console.WriteLine(Utility.GetFirstElement(names)); // John
}
}
반응형
'Programming' 카테고리의 다른 글
| C# LINQ(Language Integrated Query) (0) | 2025.12.11 |
|---|---|
| C# 델리게이트와 이벤트 (0) | 2025.12.10 |
| C# 객체지향 프로그래밍 (OOP) (0) | 2025.12.08 |
| C# 클래스와 객체 (0) | 2025.12.07 |
| C# 인터페이스와 추상 클래스 (0) | 2025.12.06 |