파파비의 블로그

C#) params - 함수에 넣는 인자의 수가 유동적일때 본문

개발/c#

C#) params - 함수에 넣는 인자의 수가 유동적일때

N. Dave 2020. 5. 22. 09:05
반응형

우리가 함수, function or method를 처음배울 때 흔히 쓰이는 예시가 있다.

바로 '더하기' 기능을 가진 함수 예시이다.

 

위처럼 2개의 정수를 받아 더한 값을 return하는 그런 함수말이다.

그런데 이 함수는 한 가지 아쉬운 점이 있다.

 

2개의 정수의 합은 잘 구하지만 

3개의 정수의 합을 구할 때는 최소 2번의 계산이 필요하다.

 

a+b+c의 값을 구하려면

 

int sum = Add(a+b);

sum = Add (sum+c);

 

이렇게 말이다.

 

이게 3개의 정수가 아니라, 여러 개면 더욱 코딩해야하는 줄 수가 늘어난다.

그럴바엔 안쓰는게 나을 것 같다.

 

이런 불편함을 해결하기 위해, params 라는 키워드가 존재한다.

 

params는 가변매개변수를 구현할 수 있게 해준다.

가변매개함수는 말 그대로, 매개변수가 변할 수 있다는 뜻이다.

 

코드를 먼저 보고 얘기를 더 해보자

Add함수를 보면 인자에 params라는 키워드가 들어간다.

params는 함수를 정의할 때, 매개변수 쪽에 넣는다.

params 뒤로는 들어오는 매개변수 타입의 배열로 표시를 해준다. 

 

위 함수는 보이는 것처럼 매개변수로, 다양하게 들어가도 에러가 뜨지 않는다.

전부다 params 덕분이다.

 

함수를 정의할 때, params뒤에 '배열'이 왔는데,

함수를 호출할 때는 배열이 들어가지 않는 게 신기할 수 있다.  

params 덕분이라고 할 수 있다.

 

그렇다면 매개변수에 int 배열이 들어가면 어떻게 될까? 에러가 생길까?

결론부터 말하자면, 문제없다.

아래 그림으로 첨부해놨다. 에러도 잡히지 않고 잘 돌아간다.

중간에 배열을 넣어보았다.

 

 

반응형
Comments