기본적으로 C# 에서는 함수를 호출할때
함수가 정의된 파라미터와 자료형, 순서, 개수등이 동일해야한다.
그러나 이를 모두 맞춰주는것이 상당히 불편한 상황이 생길수있어
C#에서는 다양한 매개변수 스타일을 제공해준다
1. 가변길이 매개변수
여러가지 숫자의 합을 리턴해주는 함수를 만든다고 해보자
다음과 같이 2개짜리 3개짜리 4개짜리 ... 을 만들어야 할것이다.
이러한 상황을 해결하기위하여 나온것이 가변길이 매개변수이다.
다음과같이 params 키워드와 뒤에 배열을 받으면
자동적으로 받은 파라미터를 배열의 순차적으로 집어놓고 사용할수 있게 한다.
2. 디폴트 파라미터 (선택적 매개변수)
게임에서 사용자 ID 를 출력하는 함수를 만들었다고 해보자
해당 함수를 사용중인데 로그인하지 않고 사용하고 싶어하는 유저들이 있어 로그인하지 않은경우
일반사용자님 안녕하세요~ 라는 메시지를 띄우고 싶다.
근데 각종 게임을 만들면서 사용하다보니 로그인하지 않고 사용하는 유저들이 너무많아
이럴때마다
PrintUser("일반사용자")
처럼 "일반사용자" 를 인자로 넘겨줘야하는것이 너무 귀찮아졌다.
그럴때 사용하는것이 디폴트 파라미터이다.
다음과 같이 함수 정의에서 파라미터값을 미리 정해놓으면 해당 인자가 들어가지 않았을경우 미리 정해준 인자가 들어가게된다.
위와 같이 사용가능하다.
디폴트 파라미터를 정할때 주의할점은
파라미터 뒤부터 채워져야 한다는것이다.
이유는 해당 함수를 쓸때 우리가 파라미터를 앞에서 부터 채워넣기때문이다.
위 함수에서 일반사용자에게 다른메시지를 띄워주고 싶으면 어떻게할까?
이렇게 해버리면..
과 같이 출력되게된다.
기본적으로 함수의 인자는 들어가는 순서에 따라 정해지게 되어있어 처음들어가는 인자는 username이어야한다.
따라서 결국
일반사용자님 강퇴당하였습니다.
과 같이 일반사용자가 디폴트 인수임에도 불구하고 넘겨주어야하는데
C# 에서는 이와 같은 상황을 해결하기위해 키워드 인수 방법을 제공한다.
과같이 파라미터 이름을 지정하면서 넘겨주게 되면 해당 파라미터로 값이 들어가게된다.
파라미터명:파라미터값 으로 순서에 맞지 않아도 파라미터의 이름으로 값을 넘겨 줄수있다.
'교육 노트 > C# 강의' 카테고리의 다른 글
[C# 때려잡기] C# 강의 16.객체지향 전에.. 간단한 구조체 (0) | 2018.10.04 |
---|---|
[C# 때려잡기] C# 강의 15.킹갓 var (0) | 2018.10.04 |
[C# 때려잡기] C# 강의 13. ref 와 out (0) | 2018.10.04 |
[C# 때려잡기] C# 강의 12. 참조형식 자료형 (6) | 2018.10.04 |
[C# 때려잡기] C# 강의 11. call by value / call by reference (2) | 2018.10.04 |