[C#] Generators, Containers 정의

이현석·2023년 4월 27일
0

C#

목록 보기
1/2

C# Generators 란

C# Generator는 C# 9.0에서 새롭게 도입된 기능 중 하나입니다. 이 기능은 yield 문과 함께 사용하여 시퀀스를 생성하는 메서드를 작성할 수 있도록 해줍니다.

Generator는 일반적으로 IEnumerable 또는 IEnumerator 인터페이스를 구현하는 것과 비슷한 방식으로 작성됩니다. 하지만 메서드에서 값을 반환하는 대신, yield return 문을 사용하여 시퀀스의 각 요소를 반환합니다. 이렇게 하면 시퀀스를 생성하는 데 필요한 코드가 훨씬 더 간단해지며, 성능도 향상될 수 있습니다.

Generator는 특히 대규모 데이터 집합을 처리하거나 데이터베이스 쿼리와 같은 작업을 수행하는 데 유용합니다. 이전에는 이러한 작업을 위해 IEnumerable 또는 IEnumerator를 사용했지만, 이러한 인터페이스를 구현하는 것은 번거롭고 복잡합니다. C# Generator를 사용하면 이러한 작업을 더 쉽고 간단하게 처리할 수 있습니다.

  • 다음은 C# Generator를 사용하여 간단한 시퀀스를 생성하는 예시 코드입니다. 이 예시에서는 1부터 5까지의 정수를 반환하는 간단한 Generator 함수를 작성합니다.
using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        foreach (int i in GenerateNumbers())
        {
            Console.WriteLine(i);
        }
    }

    static IEnumerable<int> GenerateNumbers()
    {
        yield return 1;
        yield return 2;
        yield return 3;
        yield return 4;
        yield return 5;
    }
}

위의 코드를 실행하면 콘솔에 1부터 5까지의 정수가 출력됩니다. Generator 함수는 GenerateNumbers() 메서드에서 정의되며, yield return 문을 사용하여 시퀀스의 각 요소를 반환합니다. foreach 문에서는 GenerateNumbers() 함수가 반환하는 시퀀스의 각 요소를 반복하여 출력합니다.

위의 예시는 매우 단순한 시퀀스를 생성하는 것이지만, Generator를 사용하면 더 복잡한 시퀀스를 생성할 수도 있습니다. 예를 들어, Generator를 사용하여 데이터베이스에서 데이터를 검색하고 처리하는 경우가 있을 수 있습니다.

C# containers 란

"containers"란 데이터를 저장하고 관리하기 위한 추상적인 개념을 나타냅니다. 컨테이너는 데이터 구조를 나타내며, 다른 데이터 타입의 요소를 포함할 수 있습니다.

컨테이너는 여러 가지 형태로 제공됩니다. 예를 들어 C#에서는 배열, 리스트, 스택, 큐, 딕셔너리 등 다양한 컨테이너를 제공합니다. 이러한 컨테이너들은 데이터를 효율적으로 저장하고 검색하며, 데이터를 다른 컨테이너로 이동시키거나 처리할 때 매우 유용합니다.

컨테이너는 프로그래밍에서 매우 중요한 역할을 합니다. 데이터 구조를 효율적으로 관리하고 처리하기 위해 컨테이너를 사용하는 것은 매우 일반적이며, 대부분의 프로그래밍 언어에서 기본적으로 제공되는 데이터 구조입니다. 컨테이너를 올바르게 선택하고 사용하면 프로그램의 성능과 유지 보수성이 향상될 수 있습니다.

다음은 C#에서 제공하는 몇 가지 컨테이너 예시입니다.

  1. 배열(Array)
int[] numbers = new int[5] { 1, 2, 3, 4, 5 };

배열은 같은 데이터 타입의 고정된 크기의 요소를 저장할 수 있는 컨테이너입니다.

  1. 리스트(List)
List<int> numbers = new List<int>() { 1, 2, 3, 4, 5 };

리스트는 동적으로 크기가 조절 가능한 요소를 저장할 수 있는 컨테이너입니다.

  1. 스택(Stack)
Stack<int> numbers = new Stack<int>();
numbers.Push(1);
numbers.Push(2);
numbers.Push(3);

스택은 후입선출(LIFO) 구조를 가지는 요소를 저장하는 컨테이너입니다.

  1. 큐(Queue)
Queue<int> numbers = new Queue<int>();
numbers.Enqueue(1);
numbers.Enqueue(2);
numbers.Enqueue(3);

큐는 선입선출(FIFO) 구조를 가지는 요소를 저장하는 컨테이너입니다.

  1. 딕셔너리(Dictionary)
Dictionary<string, int> numbers = new Dictionary<string, int>();
numbers.Add("One", 1);
numbers.Add("Two", 2);
numbers.Add("Three", 3);

딕셔너리는 키-값 쌍으로 이루어진 요소를 저장하는 컨테이너입니다.

위의 예시 코드는 C#에서 제공하는 몇 가지 컨테이너의 예시이며, 이 외에도 다양한 컨테이너가 존재합니다.

profile
溫故知新

0개의 댓글