C#

C# 기초부터 고급까지 Chapter 1.4. 배열, 리스트, 딕셔너리 – C# 컬렉션 제대로 잡기

Juan_ 2025. 4. 24. 18:39
728x90

📚 Chapter 1.4: 배열, 리스트, 딕셔너리 – C# 컬렉션 제대로 잡기


✅ 이 챕터에서 배울 것

C#에서 데이터를 여러 개 묶어 관리하려면?
그럴 땐 배열, List, Dictionary가 핵심이다!
  • 배열(Array)의 구조와 한계
  • List<T>의 유연함
  • Dictionary<TKey, TValue> – Key-Value 매핑
  • 언제 뭘 써야 하는지 실무 기준으로 비교

📦 1. 배열(Array) – 고정 크기의 연속된 저장소

string[] fruits = new string[3];  // 3칸짜리 문자열 배열 선언

fruits[0] = "사과";
fruits[1] = "바나나";
fruits[2] = "귤";

// 출력
for (int i = 0; i < fruits.Length; i++)
{
    Console.WriteLine("과일 " + i + ": " + fruits[i]);
}

✅ 요약

특징설명
고정 길이한 번 선언하면 크기 못 바꿈
빠름연속된 메모리 덩어리 → 성능 좋음
단점크기 변경 불가, 유연성 부족

🧺 2. 리스트(List) – 배열보다 유연한 컬렉션

using System.Collections.Generic;

List<string> animals = new List<string>();

animals.Add("고양이");
animals.Add("강아지");
animals.Add("호랑이");

foreach (string a in animals)
{
    Console.WriteLine("동물: " + a);
}
✅ 실무에서는 배열보다 무조건 List가 더 많이 쓰인다!

✨ 꿀팁 기능들

animals.Insert(1, "펭귄");    // 중간에 끼워넣기
animals.Remove("강아지");    // 값으로 삭제
animals.RemoveAt(0);         // 인덱스로 삭제
bool exists = animals.Contains("호랑이"); // 존재 확인

🔑 3. 딕셔너리(Dictionary) – Key로 바로 찾기

Dictionary<string, int> scores = new Dictionary<string, int>();

scores["철수"] = 95;
scores["영희"] = 87;

Console.WriteLine("영희 점수: " + scores["영희"]);
✅ 키(Key)로 바로 접근 가능하니까
학생 이름, 상품 코드 등 식별자 기반으로 쓰기 딱 좋음!

🚨 주의

  • 존재하지 않는 키에 접근하면 KeyNotFoundException 터진다!
  • 항상 .ContainsKey()로 확인하고 접근하자
if (scores.ContainsKey("민수"))
    Console.WriteLine("민수 점수: " + scores["민수"]);
else
    Console.WriteLine("민수 데이터 없음!");

⚖️ 실무 기준 비교표

항목배열 (Array)ListDictionary<TKey, TValue>
크기 변경❌ 고정✅ 동적 가능✅ 동적 가능
접근 방식인덱스인덱스키(Key)
삽입/삭제어려움쉬움쉬움 (단, 키 중복 X)
정렬수동.Sort() 가능수동 정렬 or LINQ
용도성능 위주 고정형 데이터대부분 일반 컬렉션ID 매핑, 검색 빠르게 할 때

💥 장선생의 실전 꿀팁

  • 배열은 성능 최적화에만 → 나머진 List 써라!
  • Dictionary 쓸 땐 Key 중복되면 예외 터진다
  • List 안에 Dictionary 넣거나,
    Dictionary 값에 List 넣는 중첩 컬렉션도 자주 쓴다!
Dictionary<string, List<string>> studentSubjects = new();
studentSubjects["철수"] = new List<string> { "수학", "과학" };

✅ 요약 정리

타입특징
배열고정 크기, 빠름, 유연성 부족
List동적 크기, 가장 자주 쓰임
Dictionary<TKey, TValue>Key 기반 조회, 빠름, 검색 최적

📘 다음 챕터 예고 🎓

Chapter 1.5: 메서드 오버로딩, params, optional parameter!

함수 호출할 때 인자 여러 개 받을 수 있는 방법들,
이걸 알아야 진짜 유연한 API 만들 수 있다!
728x90