C# 강좌 : 제 39강 - 제네릭

C# Generic

C# 강좌 : 제 39강 - 제네릭
[ C# ] - 윤대희

제네릭(Generic)


제네릭은 데이터 형식을 지정하지 않고 형식 매개변수로 전달해 클래스를 정의합니다.

제네릭을 활용할 경우, 데이터 형식별로 클래스를 생성하지 않아 재사용성, 안전성 등을 최대화 할 수 있습니다.

C++의 템플릿과 비슷한 역할을 합니다. 더 간단한 접근 방식을 제공하지만, 산술 연산자는 호출할 수 없고 사용자 정의 연산자는 호출할 수 있습니다.



using System;

namespace Project
{
    class Program
    {
        static void Main(string[] args)
        {
            GenericQueue<int> intData = new GenericQueue<int>(100);

            intData.Enqueue(100);
            intData.Enqueue(200);
            intData.Enqueue(300);

            Console.WriteLine(intData.Dequeue());
            Console.WriteLine(intData.Dequeue());
            Console.WriteLine(intData.Dequeue());

            intData.Enqueue(400);
            Console.WriteLine(intData.Dequeue());
            Console.WriteLine(intData.Dequeue());
        }   
    }

    class GenericQueue<T>
    {
        public T[] array;
        private int count = 0;

        public GenericQueue(int length)
        {
            array = new T[length];
        }

        public void Enqueue(T value)
        {
            array[++count] = value;
        } 

        public T Dequeue()
        {
            return count == 0 ? default(T) : array[count--];
        }
    }
}

제네릭 클래스<T>를 활용해 정의합니다.

T는 형식 매개변수를 의미하며, 이 값으로 데이터 형식이 설정됩니다.



class GenericQueue<T>
{
    public T[] array;
    private int count = 0;

    public GenericQueue(int length)
    {
        array = new T[length];
    }

    public void Enqueue(T value)
    {
        array[++count] = value;
    } 

    public T Dequeue()
    {
        return count == 0 ? default(T) : array[count--];
    }
}

형식 매개변수를 활용하는 변수에는 T를 사용해 정의합니다.

array 변수는 형식 매개변수의 배열이 됩니다.

GenericQueue 생성자를 통해, 배열 T의 크기를 설정합니다.

Enqueue 메서드를 통해 값을 입력합니다.

Dequeue 메서드를 통해 값을 출력합니다.

이 때, count의 값이 0이라면, default(T)를 반환합니다.

default(T)는 형식 매개변수가 값 형식인 경우 0을 반환하며, 참조 형식인 경우 null을 반환합니다.



GenericQueue<int> intData = new GenericQueue<int>(100);

intData.Enqueue(100);
intData.Enqueue(200);
intData.Enqueue(300);

Console.WriteLine(intData.Dequeue());
Console.WriteLine(intData.Dequeue());
Console.WriteLine(intData.Dequeue());

intData.Enqueue(400);
Console.WriteLine(intData.Dequeue());
Console.WriteLine(intData.Dequeue());
결과
300
200
100
400
0

GenericQueue를 생성할 때 형식 매개변수를 int로 사용합니다.

Enqueue 메서드로 값을 넣을 수 있으며, Dequeue 메서드로 값을 반환합니다.

더 이상 출력할 값이 없다면 0이나 null을 반환합니다.


도움이 되셨다면 광고 클릭 부탁드립니다.


Book Image

책이 출간되었습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C# OpenCvSharp4
  • Python OpenCV4
  • Using Tesseract
  • Using TensorFlow
  • Using Regular Expression
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]


    ⤧  Previous post C# 강좌 : 제 38강 - 추상
    C# Category