Generic Type은 특정 클래스나 함수에서 여러가지 데이터타입을 인자값으로 받거나 리턴해줄때 사용한다.

 

기본적인 사용방법은 다음과 같다.

// T는 다른 임의의 값을 넣어도 상관없다.

public static class GenericSample
{
    public static void Print(T _Value)
    {
        Console.WriteLine(_Value);
    }
}

public class GenericSample2<T>
{

}

위와 같이 선언해준다음에 <T>위치에 원하는 데이터 타입을 넣어준다.

 

아래와 같은 상황에서 쓰이면 유용하다.

public static class Sample
{
    public static void Print(int _Value)
    {
        Console.WriteLine(_Value);
    }

    public static void Print(string _Value)
    {
        Console.WriteLine(_Value);
    }

    public static void Print(float _Value)
    {
        Console.WriteLine(_Value);
    }
}

같은 함수인데 넣어주는 데이터타입마다 새로운 함수를 넣어주는것이 불편한데,

이때 아래와 같이 제네릭 타입으로 선언해주면 넣어주는 값에 따라서 데이터타입이 결정되게 된다.

public static class GenericSample
{
    public static void Print(T _Value)
    {
        Console.WriteLine(_Value);
    }
}

 

아래는 전체 내용

public static class Sample
{
    public static void Print(int _Value)
    {
        Console.WriteLine(_Value);
    }

    public static void Print(string _Value)
    {
        Console.WriteLine(_Value);
     }

    public static void Print(float _Value)
    {
        Console.WriteLine(_Value);
    }
}

public static class GenericSample
{
    public static void Print(T _Value)
    {
        Console.WriteLine(_Value);
    }
}


class Program
{
    static void Main(string[] args)
    {
        // int는 사용가능
        Sample.Print(1);

        // double 형태시에 오류가 발생한다.
        // double형을 사용하기 위해서는 Sample class에 overloading 해주어야한다.
        Sample.Print(1.123);


        // 하지만 Generic 타입으로 선언한 함수의 경우 데이터타입을 자유롭게 넣어줄수있다.
        GenericSample.Print(1);
        GenericSample.Print(1.123);
        GenericSample.Print("test");
        GenericSample.Print(1.2345f);
    }
}

'C# > Basic' 카테고리의 다른 글

Directory, DirectoryInfo  (0) 2021.03.09
File, FileInfo  (0) 2021.03.08
상속 (inheritance)  (0) 2021.02.25
접근 제한자 (Access Modifier)  (0) 2021.02.14
this  (0) 2021.02.13