Unity3d C# toolba 사용해보기

C# Method의 가변길이 매개변수을 알아봅니다





정말 눈에 레이저를 켜고서 열심히 하고 있는 제가 정말 신기하네요 ㅎㅎㅎ  

이런 열정으로 살았다면 좀 더 나은 직장을 다니고 있었을 텐데...라는 후회가 살짝 밀려옵니다.

이번에 알아볼 것은  C$에서 가변 길이의parameter(매개변수) 이야기입니다.

좀 특이하면서 있으면 도움이 되는 parameter(매개변수)라고 생각합니다.

메소드를 만들 때..  지난 시간에 오버로딩(Overloading)에 대해서 알아봤는데요..

parameter(매개변수)의 갯수나 타입에 따라서 전혀 다른 Method(함수)를 만들 수 있는 것 말이죠..

그런데 책의 필자는 이런 생각을 했는지 모르겠습니다.   parameter(매개변수)의 숫자가 다르지만.. 같은 메소드를 이용 하고 싶다.. 이거죠!    저랑 생각의 틀이 비슷하신 분 같습니다~ 특이 한걸 좋아 하시는....

오버로딩과는 전혀 다른 개념인 것이죠..

제가 상상하기는 아래와 같은 기능을 하는 함수가 있었으면 어디든 써먹을 만한 데가 있을 법도 한 데요..

int Sum ( int a1, int a2, int a3 ..... int ? )
{
   return a1 + a2 + a3 + .... a?;
}

parameter(매개변수)가 얼마나 될지 모르며.. Method 안에는.. 넘겨 받아온 숫자 만큼을 계산하는 로직의 함수.. 게임 같은데에 혹시 써먹을 수 있을지 모르겠네요.. 당장은 떠오르지는 않는데요..^^;

근데 이런 메소드가 가능하다면 계산 하는 것이 어느 특정 부분에서는 생각보다 쉽게 해결이 될 수 있을 것 같은 생각이 듭니다.

이곳에서도 키워드를 사용해서 이런 기능이 가능하도록 처리하네요.. 키워드 하니 생각 나는 것이..

ref와.. out이 기억납니다. 다들 잊지 않으신 거죠..?  ref는 참조에 의한 parameter(매개변수) 전달로..(Call by reference..) 그리고 out은 Method의 출력 전용 키워드 였습니다.
이곳에서 사용하는 키워드는..   params입니다.

이런 이름 인걸 보니.. 값 전달용 파라메터가 생각이 나네요..;;

params 키워드를 사용하여 가변 길이의 parameter(매개변수)를 담을 수 있는 메소드를 만들 수 있다고 합니다!

int Sum (params int[] ary)
{
   int  sum = 0;
   for (int i=0; i<ary.Length ; i ++ )
   {
       sum += ary[i];
   }
   return sum;
}


이런 식이네요 근데 언듯 보니.. 제가 잘 가독을 못해서 인지...    Method를 parameter(매개변수)가..배열 타입 인 것으로 선언을 한 것이 아닌가 하는데요...;;;;  아무튼 좀 이상하네요..

그래서 실제 적용을 할 때는.. 아래 와같이 하면 됩니다.


....(중략)...
int a = Sum( 1,2,3,4,5,6,7);

Consol.WritLine("1,2,3,4,5,6,7의 더한합은:{0}",a);
...

Method를 생성할때..  params 키워드가 없다면.. 이것은 배열을 parameter(매개변수)로 받는 것이 분명한데요 잘 기억 해야할 것 같습니다.

아래는 한번 예제를 만들어서 한번 돌려 본 것인데요..  1,2,3,4....15 까지 의 숫자를 집어넣어서 더하는 메소드를 이용해서 결과 값을 찍어봤습니다. 유용 할 것 같네요..




variable-length parameters of the C # Method



이상으로 C# Method의 가변 길이의 parameter(매개변수) 에 대해 알아봤습니다. 감사합니다.


댓글