ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 일반화 메소드 (제네릭 메소드)
    C# 예제 공부일기 2020. 7. 13. 18:53

    일반화 프로그램은 데이터 형식을 일반화 하는 기법으로 Generic Programming이라고 한다. int 메소드를 출력하는 PrintArray(int[] a) 메소드를 만들 었는데, double 배열도 출력할 일이 생겼을 때 앞서 배운 방식으로 반환타입만 바꿔줘서 복사를 하는 방법도 있겠지만, 더 좋은 방법이 일반화 프로그램이다. 일반화 프로그램으로 만든 메소드를 일반화 메소드라고 하며 위에서 메소드 중복으로 만든 두개의 (int,double)에 대해 하나의 메소드로 처리가 가능해진다.

     

    void PrintArray<T>(T[] a) { }  //일반화 메소드 정의

    여기서 사용된 T는 type이라는 의미를 갖는 기호이다. 다른 문자도 사용가능 <T> 는 int, double등의 형식으로 대치된다.

     

    using System;
    
    namespace CPractice
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] a = { 1, 2, 3 };
                double[] d = { 0.1, 0.2, 0.3 };
                string[] s = { "tiger", "lion", "zebra" };
    
                printArray<int>(a);
                printArray<double>(d);
                printArray<string>(s);
            }
            private static void printArray<T>(T[] a)
            {
                foreach (var item in a)
                    Console.WriteLine("{0,8}", item);
                Console.WriteLine();
            }
        }
    }
    

     

    위와 같이 메소드를 호출 할때, <>안에 자료형을 선언함으로 하나의 메소드로 세개의 다른 자료형을 커버한 것을 볼 수 있다. {0,8}의 의미는 배열의 모든 요소를 8자리로 출력하는 것을 의미한다.

     

    메소드를 정의할 때 <T>(T[] a) T의 자료형에 대한 배열임을 꼭 알아두자

Designed by Tistory.