템플릿이란 용어는 C++에서 사용되는 용어이고 C#에서는 Generic이라고 표현합니다. 자료형 변환과 관련된 강력한 기능을 제공하며 다양한 데이터 타입에 대해 재사용 가능한 코드를 작성할 수 있습니다.
제네릭(Generic)은 클래스, 메서드, 인터페이스 등을 정의할 때 특정 데이터 타입을 일반화하여 코드의 재사용성과 타입 안전성을 높여줍니다. 컴파일 단계에서 타입 검사를 수행하여 런타임에 타입 정보를 안전하게 처리할 수 있습니다. 여기서 컴파일, 런타임을 그림으로 간단히 알려드리겠습니다.
여기서 제네릭(Generic)은 컴파일 단계에서 타입에 대한 검사를 수행하고 런타임에 정보를 안전하게 처리할 수 있도록 수행합니다. 이제 관련 코드를 확인해보겠습니다.
using System.Collections; //array 사용
using System.Collections.Generic; //제네릭(템플릿)
class Program
{
//제네릭 메서드 (함수 템플릿(Function Template))
//원하는 자료형 변환하는 법.
//함수 오버로딩은 기능을 바꾸는 것
//템플릿은 자료형을 바꾸는 기능
static void PrintType<T, A>(T _t, A _a) //T는 Template 약자
{
Console.WriteLine(_t.GetType()); //Type 출력해주라.
}
//static void Sum<T1, T2>(T1 _lhs, T2 _rhs)
//{
// return _lhs + _rhs;
//}
//클래스 템플릿, 템플릿 클래스 둘 다 아무거나 부름.
class Template<T, A>
{
public T _t;
public void CheckType()
{
Console.WriteLine(_t.GetType());
}
}
static void Main()
{
//템플릿(Template)
PrintType<int, int>(10, 5);
PrintType<string, double>("string", 5);
PrintType<float, decimal>(3.14f, 10);
Template<int, float> temp = new Template<int, float>();
temp.CheckType();
//Collection
//STL: Standard Template Library
//Generic Programming(일반화 프로그래밍)
}
}
제네릭을 사용하기 위해선 아래의 문장이 필요합니다.
using System.Collections.Generic;
템플릿에서는 템플릿 클래스, 함수, 인터페이스가 있고, 제네릭에서는 각각 클래스, 메서드, 인터페이스 3가지를 다룰 수 있습니다. 여기서 함수와 메서드는 언어의 차이이며 그림으로 표현하겠습니다.
이제 제네릭이 사용된 코드들을 상세히 살펴보겠습니다.
class Program
{
static void PrintType<T, A>(T _t, A _a) //T는 Template 약자
{
Console.WriteLine(_t.GetType()); //Type 출력해주라.
}
//제네릭 클래스
//클래스 템플릿, 템플릿 클래스 둘 다 아무거나 부름.
class Template<T, A>
{
public T _t;
public void CheckType()
{
Console.WriteLine(_t.GetType());
}
}
}
- PrintType<T, A>(T _t, A _a): _t의 Type을 출력하라는 메서드
- CheckType(): 제네릭 클래스의 class Template<T, A>에 속한 메서드로 T룰 _t로 대체하고 _t의 Type을 출력하라는 메서드
static void Main()
{
//템플릿(Template)
PrintType<int, int>(10, 5);
PrintType<string, double>("string", 5);
PrintType<float, decimal>(3.14f, 10);
Template<int, float> temp = new Template<int, float>();
temp.CheckType();
//Collection
//STL: Standard Template Library
//Generic Programming(일반화 프로그래밍)
}
출력값
System.Int32
System.string
System.Single //C#에서 32비트 부동소수점을 나타내는 데이터 타입으로 float의 키워드입니다.
System.Int32
Single과 같이 64비트 부동소수점의 데이터 타입 Double도 있습니다.
끝
'프로그래밍 C#언어' 카테고리의 다른 글
대리자(delegate) (0) | 2024.09.10 |
---|---|
컬렉션(Collections) (0) | 2024.09.09 |
상속3 (0) | 2024.09.09 |
상속2 (5) | 2024.09.05 |
상속 (Inheritance) (0) | 2024.08.30 |