파파비의 블로그
C#) params - 함수에 넣는 인자의 수가 유동적일때 본문
우리가 함수, 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 배열이 들어가면 어떻게 될까? 에러가 생길까?
결론부터 말하자면, 문제없다.
아래 그림으로 첨부해놨다. 에러도 잡히지 않고 잘 돌아간다.
'개발 > c#' 카테고리의 다른 글
C#) 스택메모리, 스택오버플로우, 재귀호출 (0) | 2020.05.23 |
---|---|
C# 전처리기 지시문, 전처리 상수 (0) | 2020.05.21 |
C# get,set // 프로퍼티 (0) | 2020.05.20 |
C#) 값형식과 레퍼런스형식 2 - 복사에 대한 개념(call by value, call by reference)과 ref 예약어 (1) | 2020.05.20 |
C#) System.Array - 배열들의 조상 (0) | 2020.04.04 |