함수를 작성하다보면 같은 연산을 하지만 자료형이 달라 동일한 작업을 하는 함수를 두개 이상 만들어야 하는 경우가 있습니다. 물론 객체지향 개념에서의 함수 오버로딩(함수 중복)을 이용하면 사용하는데에는 별 문제가 되지 않지만, 그래도 쓰라고 있는 기능이기에...
기본적으로 C++의 Templete 기능과 비슷한 개념입니다.
Generic 사용예제 :
<StackType>으로 명명한 부분이 원래 변수가 들어가야 할 자리 입니다.
이후에 Stack 객체 생성시 Stack<int> stk1 = new Stack<int>(); 와 같이 사용할 변수 타입을 넣어줍니다.
사용하실 때는 생성하실때 매핑 한 변수 타입으로 사용하시면 됩니다.
기본적으로 C++의 Templete 기능과 비슷한 개념입니다.
Generic 사용예제 :
using System; class Stack<StackType> { private StackType[] stack = new StackType[100]; private int sp = -1; public void Push(StackType element) { stack[++sp] = element; } public StackType Pop() { return stack[sp--]; } } class GenericClassApp { public static void Main() { Stack<int> stk1 = new Stack<int>(); Stack<double> stk2 = new Stack<double>(); // Push for (int i = 0; i <= 3; i++) { stk1.Push(i); stk2.Push(i + 0.5); } // Integer Stack Pop Console.Write("정수 스택 :"); for (int i = 0; i <= 3; i++) Console.Write(stk1.Pop() + "\t"); // Double Stack Pop Console.Write("\n실수 스택 :"); for (int i = 0; i <= 3; i++) Console.Write(stk2.Pop() + "\t"); Console.WriteLine(); } }
<StackType>으로 명명한 부분이 원래 변수가 들어가야 할 자리 입니다.
이후에 Stack 객체 생성시 Stack<int> stk1 = new Stack<int>(); 와 같이 사용할 변수 타입을 넣어줍니다.
사용하실 때는 생성하실때 매핑 한 변수 타입으로 사용하시면 됩니다.