C# 컬렉션(Collection) 사용하기
C#에서 컬렉션(Collection)은 여러 개의 값을 모아서 저장하는 데이터 구조를 말합니다. 컬렉션은 단순히 값의 저장뿐만 아니라, 값을 추가, 삭제, 검색 등의 작업을 수행할 수 있도록 하는 다양한 메서드와 속성을 제공합니다. C#에서는 .NET 프레임워크에 포함된 다양한 컬렉션 클래스를 사용할 수 있습니다.
ArrayList 클래스 사용하기
ArrayList 클래스는 가변 길이의 배열을 만들어서 값의 추가, 삭제, 검색 등의 작업을 수행할 수 있습니다. 아래는 ArrayList 클래스를 사용하는 예제입니다.
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
// ArrayList 인스턴스 생성
ArrayList list = new ArrayList();
// 값 추가하기
list.Add(1);
list.Add(2);
list.Add(3);
// 값 삭제하기
list.Remove(2);
// 값 검색하기
int index = list.IndexOf(3);
// 값 출력하기
foreach (int value in list)
{
Console.WriteLine(value);
}
}
}
위 예제에서는 ArrayList 클래스를 사용하여 값을 추가, 삭제, 검색하고 출력하는 방법을 보여줍니다. ArrayList 클래스는 배열과 달리 가변 길이의 컬렉션을 만들어서 값의 추가, 삭제, 검색 등의 작업을 수행할 수 있습니다.
List 클래스 사용하기
List 클래스는 ArrayList 클래스와 유사하지만, 제네릭(Generic) 타입을 사용하여 타입 안정성을 보장합니다. List 클래스를 사용하면 컴파일 시점에 타입 안정성을 보장하며, 런타임 시에는 불필요한 형변환이 없어 높은 성능을 제공합니다. 아래는 List 클래스를 사용하는 예제입니다.
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// List 인스턴스 생성
List<int> list = new List<int>();
// 값 추가하기
list.Add(1);
list.Add(2);
list.Add(3);
// 값 삭제하기
list.Remove(2);
// 값 검색하기
int index = list.IndexOf(3);
// 값 출력하기
foreach (int value in list)
{
Console.WriteLine(value);
}
}
}
예제에서 사용된 List 클래스는 C#의 제네릭 클래스로, ArrayList와 달리 타입 안정성을 보장합니다. ArrayList는 object 타입으로 값을 저장하기 때문에 값을 가져올 때 형변환을 해야 하는데, 이는 런타임 오류를 발생시킬 가능성이 있습니다. 하지만 List 클래스는 타입 파라미터를 사용하여 값의 타입을 지정하기 때문에 형변환이 필요하지 않습니다.
또한, 제네릭 타입을 사용하면 런타임 시에 불필요한 형변환이 없어지기 때문에 성능도 향상됩니다. ArrayList 클래스의 경우 값을 가져올 때 형변환을 해야 하므로 성능이 저하될 가능성이 있습니다. 하지만 List 클래스는 값을 가져올 때 이미 해당 타입으로 지정되어 있기 때문에 형변환이 필요 없어 성능 손실이 적습니다.
제네릭 컬렉션 클래스는 List뿐만 아니라 Stack, Queue, Dictionary, HashSet 등 다양한 종류가 있습니다. 각 컬렉션 클래스는 특정한 용도에 맞게 설계되어 있으며, 다양한 기능과 메서드를 제공합니다. 따라서 개발자가 필요한 기능에 맞게 적절한 컬렉션 클래스를 선택하여 사용할 수 있습니다.
'Languages > C#' 카테고리의 다른 글
C# DataTable 사용법(1) (0) | 2023.04.11 |
---|---|
C# Dictionary(사전 구조) (0) | 2023.04.11 |
C# WPF brush (0) | 2023.04.10 |
C# WPF 정적 및 동적 리소스(Static, Dynamic Resource) (0) | 2023.04.10 |
C# WPF 병합된 리소스(Merged Resource) (0) | 2023.04.10 |