Section 47.6: 파라미터 기본값 (default parameter)
특정 파라미터들에 대해 생략 가능한 선택지를 제공하고자 한다면 파라미터 기본값 (default parameter) 을 사용할 수 있다:
static void SaySomething(string what = "ehh") {
Console.WriteLine(what);
}
static void Main() {
// "hello" 를 출력한다
SaySomething("hello");
// "ehh" 를 출력한다
SaySomething(); // 컴파일러는 이 부분이 SaySomething("ehh") 라고 작성된 것 처럼 컴파일해줄 것이다
}
파라미터 기본값이 적용된 메소드를 호출하면서 해당 파라미터를 생략한다면, 컴파일러는 기본값을 대신 입력해줄 것이다.
유의할 점은, 기본값을 갖는 파라미터는 순서상 기본값이 없는 파라미터 다음에 위치해야 한다는 점이다.
static void SaySomething(string say, string what = "ehh") {
// 적합한 사용
Console.WriteLine(say + what);
}
static void SaySomethingElse(string what = "ehh", string say) {
// 부적합한 사용
Console.WriteLine(say + what);
}
주의: 위에 설명한 방식대로 동작이 이루어지기 때문에 (생략된 파라미터를 기본값으로 간주하여 컴파일), 파라미터 기본값은 경우에 따라 문제를 발생시키기도 한다. 만약 이미 존재하고 있던 파라미터 기본값을 다른 값으로 변경한 후 해당 메소드를 호출하는 모든 모듈을 다시 컴파일하지 않는다면, 이러한 기존 호출자들은 여전히 변경되기 전의, 해당 모듈이 컴파일됐던 시점의 파라미터 기본값을 사용하게 될 것이며 이는 일관되지 않은 동작을 초래할 수 있다.
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
47.8: 메소드 접근 권한들 (0) | 2022.09.21 |
---|---|
47.7: 메소드 오버로딩 (0) | 2022.09.20 |
47.5: 반환 (Return) 타입 (0) | 2022.07.26 |
47.4: 매개변수 (Parameter) 와 전달 인자 (Argument) (0) | 2022.07.26 |
47.3: 메소드 선언하기 (0) | 2022.07.26 |