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

[C#] 배열과 컬렉션

by 오 복 이 2024. 11. 12.

C#에서는 배열과 컬렉션을 사용하여  데이터를 저장하고 관리 합니다.  배열은 동일한 데이터 타입의 여러 값을 하나의 변수로 저장할 수 있는 자료 구조이며, 컬렉션 클래스는 데이터의 저장과 관리를 더욱 유연하게 할 수 있도록 도와줍니다.  배열의 선언과 사용, List와 Dictionary 등 컬렉션 클래스, 컬렉션 초기화와 열거에 대해 정리한 글입니다.


배열의 선언과 사용

배열은 동일한 데이터 타입의 데이터를 연속된 메모리 공간에 저장하는 자료 구조입니다. 배열의 크기는 선언할 때 고정되며, 이후에는 크기를 변경할 수 없습니다.

배열 선언과 초기화

배열은 다음과 같이 선언하고 사용할 수 있습니다.

using System;

class Program
{
    static void Main()
    {
        // 정수형 배열 선언과 초기화
        int[] numbers = new int[5]; // 크기가 5인 배열 선언
        numbers[0] = 10; // 첫 번째 요소에 값 할당
        numbers[1] = 20; // 두 번째 요소에 값 할당
        numbers[2] = 30;
        numbers[3] = 40;
        numbers[4] = 50;

        // 배열 요소 출력
        for (int i = 0; i < numbers.Length; i++) // 배열의 길이만큼 반복
        {
            Console.WriteLine($"numbers[{i}] = {numbers[i]}");
        }
    }
}

배열 초기화 방법

배열을 선언하면서 동시에 값을 할당할 수도 있습니다.

int[] scores = { 85, 90, 78, 92, 88 }; // 배열 선언과 초기화

2차원 배열

2차원 배열은 행과 열로 구성된 배열로, 주로 행렬 같은 데이터 구조를 다룰 때 사용합니다.

int[,] matrix = new int[2, 3] // 2행 3열의 배열 선언
{
    {1, 2, 3}, // 첫 번째 행
    {4, 5, 6}  // 두 번째 행
};

// 2차원 배열 요소 출력
for (int i = 0; i < 2; i++)
{
    for (int j = 0; j < 3; j++)
    {
        Console.WriteLine($"matrix[{i}, {j}] = {matrix[i, j]}");
    }
}

💡 배열의 크기는 고정되므로 데이터의 개수가 변경될 가능성이 있다면 컬렉션 클래스를 사용하는 것이 더 유리합니다.


 

 

List, Dictionary 등 컬렉션 클래스

C#의 컬렉션 클래스는 다양한 데이터를 유연하게 관리할 수 있도록 합니다. 대표적인 컬렉션으로 ListDictionary가 있습니다.

List

List는 크기가 동적으로 변하는 배열과 같은 자료 구조입니다. 데이터의 추가, 삭제가 용이하며, 특정 인덱스에 접근할 수 있습니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // List 선언과 초기화
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };

        // 요소 추가
        names.Add("Dave");

        // 요소 삭제
        names.Remove("Alice");

        // List 요소 출력
        foreach (string name in names)
        {
            Console.WriteLine(name);
        }
    }
}

💡 List<T>에서 <T>는 제네릭 타입 매개변수로, List<int>, List<string> 등 다양한 타입의 리스트를 만들 수 있습니다.

Dictionary

Dictionary는 키-값 쌍으로 데이터를 저장하는 자료 구조입니다. 각각의 키는 고유하며, 해당 키를 통해 데이터를 효율적으로 조회할 수 있습니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Dictionary 선언과 초기화
        Dictionary<int, string> students = new Dictionary<int, string>
        {
            { 1, "Alice" },
            { 2, "Bob" },
            { 3, "Charlie" }
        };

        // 키를 이용한 값 접근
        Console.WriteLine($"학생 번호 1: {students[1]}");

        // 새로운 요소 추가
        students[4] = "Dave";

        // Dictionary 요소 출력
        foreach (KeyValuePair<int, string> student in students)
        {
            Console.WriteLine($"학생 번호 {student.Key}: {student.Value}");
        }
    }
}

💡 Dictionary는 키-값 쌍으로 데이터를 저장하므로 데이터 검색이 빠르며, 특정 키가 있는지 확인하려면 ContainsKey() 메서드를 사용할 수 있습니다.


 

 

컬렉션 초기화와 열거

컬렉션을 초기화하는 방법은 다양하며, 초기화된 컬렉션의 요소들을 반복하여 열거할 수도 있습니다.

컬렉션 초기화

컬렉션을 선언하면서 동시에 초기화할 수 있습니다. 이렇게 하면 코드가 간결해지고 가독성이 좋아집니다.

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // List 초기화
Dictionary<string, int> ages = new Dictionary<string, int> // Dictionary 초기화
{
    { "Alice", 25 },
    { "Bob", 30 }
};

컬렉션 열거 (foreach문)

컬렉션의 모든 요소를 하나씩 반복하여 열거할 때는 foreach문을 사용하면 편리합니다.

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // List 초기화
Dictionary<string, int> ages = new Dictionary<string, int> // Dictionary 초기화
{
    { "Alice", 25 },
    { "Bob", 30 }
};

💡 foreach문은 컬렉션의 모든 요소를 열거할 때 편리하며, 특히 List와 Dictionary와 같은 컬렉션에서 자주 사용됩니다.


컬렉션 클래스: LINQ 사용

C#에서는 LINQ(Language Integrated Query)를 사용하여 컬렉션을 더욱 효율적으로 관리하고 데이터를 조회할 수 있습니다. LINQ는 컬렉션에서 데이터를 필터링하고, 정렬하고, 변환하는 데 유용합니다.

LINQ 예제: 특정 조건의 요소 조회

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // List 초기화
Dictionary<string, int> ages = new Dictionary<string, int> // Dictionary 초기화
{
    { "Alice", 25 },
    { "Bob", 30 }
};

💡 LINQ는 데이터를 다룰 때 매우 유용하며, 복잡한 필터링이나 정렬 작업을 간단한 코드로 구현할 수 있습니다.

728x90
반응형