- 공유 링크 만들기
- X
- 이메일
- 기타 앱
안녕하세요 메르세데스입니다. 이번시간에 알아볼것은 C#의 Generalization 일반화 메소드입니다.. 초반에 오버로딩에 대해서 배운적이 있는데요.. 이것은 그것과는 좀 다르게.. Method의 같은패턴을 보완해서 처리해주는 방법입니다.
예를들어서. 배열을 복사하는기능의 메소드가 있는데.. int형 배열을 복사하는것과.. string형배열을 복사하는것 double형을 복하는것을..구현하려고한다면.. 네..! 그렇죠.. 오버로딩을 이용해서 구현하면되겠네요..
그런데 이렇게 배열복사를 하는 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];
}
{
for (int i=0;i<source.Length;i++)
target[i] = source[i];
}
네.. < > 꺽쇄안에.. T라는것을 집어 넣었는데요.. 여기에 오는 문자는 꼭 T가 아니어도됩니다 A가되도되죠..
< >안의 형식을 받아와서.. 매개변수에 변수타입으로 지정하자는것이지요.. 머리를 잘쓴것 같습니다.
예제를 한번 돌려보았는데요.. 일반화로 메소드를 만들어서 적용하였고.. int,string형으로 각각 배열을 카피하는것을 적용해봤는데요..
static이고.. 같은 클래스안에 있기때문에 객체를 생성해서 접근을 안해도되죠..
가독성도 뛰어나고 정말 괜찮은것 같습니다. 눈여겨두었다가 잘 써먹어야 겠습니다 ^^ 그동안 배웠던 C#의 여러 기능들중 제 개인적으로..괜찮은것중에 하나인 것 같습니다.
이상으로 C#의 일반화(Generalization) 메소드에 대해 알아봤습니다. 감사합니다.
댓글
댓글 쓰기