일반화 프로그래밍이란?

일반화 메소드

// 일반화 메소드 선언 방법
한정자 반환형식 메소드이름 <형식매개변수> (매개변수목록)
{
    // 내부 구현
}

// 일반화 메소드 사용 예시
void CopyArray<T> ( T[] source, T[] target )
{
    for ( int i = 0 ; i < source.Length ; i++ )
    {
        target[i] = source[i];
    }
}

int[] source = { 1, 2, 3, 4, 5 };
int[] target = new int[source.Length];

CopyArray<int>(source, target);

string[] source2 = { "하나", "둘", "셋", "넷", "다섯" };
string[] target2 = new string[source2.Length];

CopyArray<string>(source2, target2);

일반화 클래스

// 일반화 클래스 선언 방법
class 클래스이름 <형식매개변수>
{
    // 내부 구현
}

// 일반화 클래스 사용 예시
class Array_Generic<T>
{
    private T[] array;
    public T GetElement(int index)
    {
        return array[index];
    }
}

Array_Generic<int> intArr = new Array_Generic<int>();
Array_Generic<double> doubleArr = new Array_Generic<double>();

형식 매개 변수 제약시키기

// 형식 매개 변수 제약 시키는 방법
where 형식매개변수 : 제약 조건

// 형식 매개 변수 제약 시키기 예시
clss MyList<T> where T : MyClass
{
    // 내부 구현
}

void CopyArray<T>(T[] source, T[] target) where T : struct
{
    // 내부 구현
}

제목 없음

일반화 컬렉션

foreach를 사용할 수 있는 일반화 클래스

IEnumerable<T>의 메소드