* 일반화 프로그래밍
// generic programming이라고 하지만.. c++에서 배운 그냥 템플릿임.
// 데이터형을 구분하지 않고 하나로 유연하게 사용할 때 필요
* 일반화 메소드
void abc<T>(T[] a)
{
foreach(T x in a)
{
Console.Write(x);
}
}
static void Main(string[] args)
{
int[] a = { 1, 2, 3 };
abc<int>(a);
}
// 보낼 때 자료형을 나타냄.
// 받을 때 T 써줌. 꼭 T가 아니어도 됨. 템플릿 약자인듯?
* 일반화 클래스
class aaa<T>
{
private T x;
public void y (T z)
{
x = z;
Console.WriteLine(x);
}
}
class Program
{
static void Main(string[] args)
{
aaa<int> a = new aaa<int>();
a.y(10);
}
}
// 클래스에 <T> 넣어줌. class aaa<T>
// 선언할 때 aaa<자료형> a = new aaa<자료형>();
// 클래스 내부에서 템플리 사용해줌
* 형식 매개변수 제외
- 안함
* 일반화 컬렉션
// using system.collections.generic;
// 컬렉션의 일반화 버전 list<t>, queue<t>, stack<t>, dictionary<tkey, tvalue>
List<int> abc = new List<int>();
abc.Add(1);
abc.Add(3);
abc.Add(5);
abc.RemoveAt(2); // 2번 인덱스 값 5 삭제
abc.Insert(1, 6); // 값 1과 3 사이 1번 인덱스에 6 삽입
// Console.WriteLine(abc[1]); // 곧바로 접근 가능
foreach (int x in abc)
{
Console.WriteLine(x);
}
// 달라진게 전혀 없다. 선언 부분만 바뀜.
// arraylist abc -> List<int> abc
// new arraylist() -> new List<int>();