Unity3d C# toolba 사용해보기

C#의 일반화 메소드를 알아보겠습니다. Generalization

안녕하세요 메르세데스입니다. 이번시간에 알아볼것은 C#의 Generalization 일반화 메소드입니다..  초반에 오버로딩에 대해서 배운적이 있는데요..  이것은 그것과는 좀 다르게.. Method의 같은패턴을 보완해서 처리해주는 방법입니다. 

예를들어서.  배열을 복사하는기능의 메소드가 있는데.. int형 배열을 복사하는것과.. string형배열을 복사하는것 double형을 복하는것을..구현하려고한다면..  네..! 그렇죠.. 오버로딩을 이용해서 구현하면되겠네요..


C# Generalization Method


그런데 이렇게 배열복사를 하는 Method를 이용하려하는데.. 100개가되는 형식이 있다고하면.. 어떻게 해야할까요?
오버로딩을통해서.. 100개를 다 선언해주어야겠네요 쿨럭!!

난감하네요..   뭐.. 현업에서 이런식으로 처리를 해야하는것은 저도 경험해 보질 못했지만.. 없으리라는 법은 없죠..

일반화라는것을 이용해서 이런 문제를 쉽게 해결할 수 있습니다.

결국 안에 로직은 동일한거잖아요..   다만.. 형식만 다를뿐인것이죠..   이런것을 좀 더 유연하게 처리 할 수 있는 방법을 C#에서 제공합니다.
 이거 정말 대박이네요..!!! 잘 기억해 두었다가 필요할때 써먹으면 정말 효율적일것 같습니다.

한정자 반환타입 메소드명<형식매개변수> {매개변수들...}   <-- 이것이 일반화를 이용한 선언하는 방법입니다.
{
    ...구현부분
}

언듯보니 좀 이상하네요.. < >  사이에 형식을 넣어주어서 처리를 하는 것입니다.

위의 배열카피하는 Method를 위의 일반화를 적용해서 한번 나타내 보겠습니다.

 static void CopyAry<T>(T[] source, T[] target )
{
      for (int i=0;i<source.Length;i++)
         target[i] = source[i];
}

네..  <   > 꺽쇄안에.. T라는것을 집어 넣었는데요.. 여기에 오는 문자는 꼭 T가 아니어도됩니다 A가되도되죠..
< >안의 형식을 받아와서.. 매개변수에 변수타입으로 지정하자는것이지요..  머리를 잘쓴것 같습니다.


C#  Generalization Method


예제를 한번 돌려보았는데요..   일반화로 메소드를 만들어서 적용하였고.. int,string형으로 각각 배열을 카피하는것을 적용해봤는데요..
static이고.. 같은 클래스안에 있기때문에 객체를 생성해서 접근을 안해도되죠..

가독성도 뛰어나고 정말 괜찮은것 같습니다. 눈여겨두었다가 잘 써먹어야 겠습니다 ^^ 그동안 배웠던 C#의 여러 기능들중 제 개인적으로..괜찮은것중에 하나인 것 같습니다.

이상으로 C#의 일반화(Generalization) 메소드에 대해 알아봤습니다. 감사합니다.

댓글