📌 디폴트 매개변수
매개 변수도 디폴트 값을 설정할 수 있다.
즉, 함수를 호출할 때 디폴트 값이 설정되어있는 매개 변수는 인자를 따로 받지 않아도 오류가 나지 않는다.
// 정의된 함수
static void PrintColor(string x_Color, string y_Color, int x = 1, int y = 2)
{
Console.WriteLine($"{x} : {x_Color}");
Console.WriteLine($"{y} : {y_Color}");
}
PrintColor함수의 x와 y는 디폴트 매개 변수가 선언된 매개 변수이다.
즉, 메인 함수에서 PrintColor함수를 호출할 때 x와 y에 따로 인자를 전달하지 않아도 된다는 뜻이다.
// 메인 함수
static void Main(string[] args)
{
PrintColor("red", "white");
Console.WriteLine("----------------");
PrintColor("blue", "orange", 3, 4);
}
[출력]
1 : red
2 : white
----------------
3 : blue
4 : orange
📖 디폴트 매개변수의 주의점
디폴트 매개변수를 선언할때는 반드시 맨 뒤에 있는 매개 변수부터 차례대로 선언해야 한다는 것이다.
static void error1 (string x_Color, string y_Color, int x = 1, int y)
static void error2 (string x_Color = "red", string y_Color, int x , int y)
static void error3 (string x_Color = "blue", string y_Color, int x = 1, int y = 2)
위 3개의 함수는 모두 잘못된 함수이다.
디폴트 매개변수가 맨 뒤에서부터 차례대로 선언되지 않았기 때문이다.
📖 명명된 인수
위 PrintColor 함수를 호출할때 y만 3으로 바꾸어서 호출한다고 가정해보자.
PrintColor("red", "white", 1, 3);
위와 같이 호출할 수 있지만 효율적인 방법이 아니다.
이미 1이라는 디폴트 값으로 초기화 되어 있는 x에 또 다시 1을 인자로 전달하기 때문이다.
이럴때 쓰는 것이 명명된 인수이다.
PrintColor("red", "white", y : 3);
이와 같이 인자를 전달할때 전달한 인자를 앞에 표시해준다.
디폴트 매개변수를 배우기 전까지는 함수에 정의되어 있는 매개변수를
모두 인자로 전달해 줘야 했기 때문에 명명된 인수를 쓸 필요가 없었지만
디폴트 매개변수를 쓸때는 알아두면 좋은 개념이다.
📖 params 키워드
함수는 당연하게도 배열을 인자로 받을 수 있다.
배열을 인자로 받는 함수를 살펴보자.
// 정의된 함수
static void PrintColorArray( string[] Color )
{
for ( int i = 0; i < Color.Length; i++ )
{
Console.WriteLine($" {i} : {Color[i]}" );
}
}
// 메인 함수
static void Main(string[] args)
{
PrintColorArray(new string[] { "blue", "white" });
}
[출력]
0 : blue
1 : white
PrintColorArray함수는 인자로 Color라는 배열의 인덱스에 해당하는 데이터값을 받는다.
그 이후 for문을 통해 출력을 해주는 기능을 가진 함수이다.
그렇다면 메인 함수에서 인자를 전달할 때,
보기 쉽게 인덱스에 해당하는 데이터 값만을 전달하는 방법은 없을까?
그것을 가능하게 해주는 것이 바로 params 키워드이다.
// 정의된 함수
static void PrintColorArray( params string[] Color )
{
for ( int i = 0; i < Color.Length; i++ )
{
Console.WriteLine($" {i} : {Color[i]}" );
}
}
// 메인 함수
static void Main(string[] args)
{
PrintColorArray("blue", "white");
}
[출력]
0 : blue
1 : white
params키워드는 배열을 인자로 받는 함수의 확장된 개념이다.
'C#' 카테고리의 다른 글
Day24_함수 / 함수의 기본 (0) | 2023.03.16 |
---|---|
Day23_구조체(struct) (0) | 2023.03.16 |
Day22_문자열(String) (0) | 2023.03.16 |
Day21_배열(Array) (1) | 2023.03.16 |
Day20_for문 (0) | 2023.03.14 |