-
일반화 메소드 (제네릭 메소드)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의 자료형에 대한 배열임을 꼭 알아두자
'C# 예제 공부일기' 카테고리의 다른 글
Stack<T>의 구현 (0) 2020.07.14 LinkedList 클래스를 활용한 프로그램 (0) 2020.07.13 LinkedList의 구현 (0) 2020.07.13 dynamic 형을 사용하는 일반화 프로그램 (0) 2020.07.13 일반화 클래스(제네릭 클래스) (0) 2020.07.13