본문 바로가기
카테고리 없음

C# 타입 완전 정복 (2편) - 컬렉션과 특수 타입

by bbongz 2025. 3. 10.

 

C# 타입 시리즈 2편에서는 컬렉션(Collection)과 특수 타입을 다룰 거예요! 🚀
1편에서 기본 타입과 값/참조 타입의 차이를 배웠다면, 이제는 여러 개의 데이터를 다루는 컬렉션 타입과 특수 타입(enum, struct, tuple 등)을 배워볼 차례!

 

✔️ enum, struct, Tuple의 특징
✔️ List<T>, Dictionary<K,V> 같은 컬렉션 타입
✔️ 배열(Array)과의 차이

 

이번 글을 보면 C#에서 데이터를 효과적으로 관리하는 방법을 이해할 수 있어요! 😃


1️⃣ enum (열거형)

enum(열거형)은 관련된 상수들의 집합을 정의할 때 사용해요.
예를 들어, 요일, 상태 코드, 색상 같은 값을 enum으로 표현하면 가독성이 좋아져요.

✅ enum 선언과 사용

enum DayOfWeek  
{  
    Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday  
}  

DayOfWeek today = DayOfWeek.Wednesday;  
Console.WriteLine(today); // Wednesday
  • 기본적으로 enum의 각 값은 int로 매핑되며, 0부터 자동 증가
  • 직접 숫자 지정도 가능
enum StatusCode  
{  
    Success = 200,  
    NotFound = 404,  
    ServerError = 500  
}  

StatusCode status = StatusCode.NotFound;  
Console.WriteLine((int)status); // 404

2️⃣ struct (구조체)

struct는 값 타입이며, 작은 데이터 묶음을 다룰 때 사용해요.
클래스(class)와 달리 스택(Stack)에 저장되기 때문에 성능이 중요한 경우 사용해요.

✅ struct 선언과 사용

struct Point  
{  
    public int X;  
    public int Y;  

    public Point(int x, int y)  
    {  
        X = x;  
        Y = y;  
    }  
}  

Point p1 = new Point(10, 20);  
Console.WriteLine($"X: {p1.X}, Y: {p1.Y}"); // X: 10, Y: 20
  • struct는 기본적으로 값 타입이라 복사(copy)됨
  • 작은 데이터 묶음에 적합하지만, 복잡한 로직이 필요하면 class 사용이 권장됨

3️⃣ Tuple (튜플)

Tuple은 여러 개의 값을 한 번에 반환할 때 유용해요!

✅ Tuple 선언과 사용

var person = ("Alice", 25, "Developer");  
Console.WriteLine($"{person.Item1}, {person.Item2}, {person.Item3}");  
// Alice, 25, Developer
  • Item1, Item2처럼 기본 이름이 붙지만, 명확한 이름을 지정할 수도 있어요!
var person = (Name: "Alice", Age: 25, Job: "Developer");  
Console.WriteLine($"{person.Name}, {person.Age}, {person.Job}");  
// Alice, 25, Developer
  • 함수에서 여러 값을 반환할 때도 사용 가능
(string, int) GetPersonInfo()  
{  
    return ("Alice", 25);  
}  

var (name, age) = GetPersonInfo();  
Console.WriteLine($"{name}, {age}");  
// Alice, 25

4️⃣ 배열과 컬렉션 (List<T>, Dictionary<K,V> 등)

C#에서 여러 개의 데이터를 다루는 방법에는 배열(Array)컬렉션(Collection)이 있어요.
컬렉션은 배열보다 더 강력한 기능을 제공해요! 🚀

🔹 배열 (Array)

int[] numbers = { 1, 2, 3, 4, 5 };  
Console.WriteLine(numbers[0]); // 1
  • 고정된 크기를 가짐
  • 요소를 추가/삭제할 수 없음

🔹 List<T> (동적 배열)

List<int> numbers = new List<int> { 1, 2, 3 };  
numbers.Add(4); // 추가  
numbers.Remove(2); // 삭제  

Console.WriteLine(string.Join(", ", numbers)); // 1, 3, 4
  • 크기가 자동 조정됨
  • 요소 추가/삭제 가능

🔹 Dictionary<Key, Value> (키-값 저장)

Dictionary<string, int> scores = new Dictionary<string, int>();  
scores["Alice"] = 90;  
scores["Bob"] = 85;  

Console.WriteLine(scores["Alice"]); // 90
  • 고유한 키(Key)로 값을 저장
  • 빠른 검색이 가능

✅ 마무리

이번 글에서는 C#의 컬렉션과 특수 타입(enum, struct, tuple, List 등)을 배웠어요! 🚀

enum으로 상수 값 관리
struct는 값 타입, class는 참조 타입
Tuple로 여러 값 한 번에 반환
배열 vs List<T> vs Dictionary<K,V> 차이

 

💡 다음 시리즈에서는 IEnumerable<T>, IQueryable<T>, DataRow 같은 데이터 관련 타입을 깊이 있게 알아볼 예정입니다!