반응형
메서드, 생성자, 인덱서 또는 대리자를 정의할 때, 해당 매개 변수를 필수 또는 선택적으로 지정하게 할 수 있습니다.
호출시 필수 매개 변수는 반드시 인수를 사용해야 하지만 선택적 매개 변수에 대한 인수는 생략할 수 있습니다.
메서드, 생성자, 인덱서 또는 대리자 등을 정의할 때, 매개 변수에 기본값(default value)을 설정해서 기본값에 대한 인수가 전달되지 않은 경우에는 기본값이 사용되게 됩니다.
다음 예제의 OptionalArguments는 필수 매개 변수 1개, 선택적 매개변수 1개로 정의된 경우입니다.
private void OptionalArguments(string name, int age=0)
{
listBox1.Items.Add("이름:" + name + ", 나이:" + age);
}
private void button1_Click(object sender, EventArgs e)
{
OptionalArguments("홍길동");
OptionalArguments("이순신", 23);
}
모든 매개 변수에 초기값을 부여하지 않을 때에는 매개변수의 뒤에서부터 초기값을 부여하여야 합니다.
예를 들면, 다음 코드에는 문제가 없습니다.
private void OptionalArguments(int a, int b=0)
{
listBox1.Items.Add(a + ", " + b);
}
private void button1_Click(object sender, EventArgs e)
{
OptionalArguments(10);
OptionalArguments(10, 20);
}
매개변수의 기본값을 앞에서 부터 부여한 경우에는 문제가 있습니다.
다음 코드에는 오류가 있습니다.
private void OptionalArguments(int a=0, int b)
{
listBox1.Items.Add(a + ", " + b);
}
private void button1_Click(object sender, EventArgs e)
{
OptionalArguments(10); // 오류입니다
OptionalArguments(10, 20);
}
OptionalArguments(10) -- 이 코드를 호출하면 a에는 10이 전달되지만 b에는 값이 할당되지 않습니다.
그래서 "필수 매개변수 ..에 해당하는 인수가 없습니다."와 같은 오류가 발생합니다.
반응형
'C# > C#_기초강의' 카테고리의 다른 글
(C#) 연산자 오버로딩 (0) | 2023.05.23 |
---|---|
(C#) dynamic 동적 형식과 object 그리고 var 형식 비교 (0) | 2023.05.05 |
(C#) 명명된 인수 named arguments (0) | 2023.05.01 |
(C#) ref, out 참조로 인수 전달하기 (0) | 2023.04.30 |
(C#) ref 참조에 의한 호출(call by reference) (0) | 2023.04.30 |