728x90
반응형
1. 명명된 매개 변수 (Named Parameter)
using System;
class Program {
public static void Main() {
SetRect(10, 20, 30, 40);
}
}
SetRect라는 함수가 어딘가에 있고 메인에서 가져다 쓴다고 해보자.
인자를 4개를 받는데 이 4개의 인자가 무슨 역할을 하는지는 모른다.
어떤게 x이고, y이고 각 변의 길이인지, 무엇인지 전혀 모른다.
이럴 경우 함수를 호출할 때 각 인자의 이름을 정해줄 수 있다.
using System;
class Program {
public static void Main() {
SetRect(x : 10, y : 20, width : 30, height : 40);
}
public static void SetRect(int x, int y, int width, int height) {
Console.WriteLine($"{x}, {y}, {width}, {height}");
}
}
① 명명된 매개 변수
=> 메소드에 인자 전달 시 인자 이름을 사용하는 방법
=> 코딩의 양이 증가 하지만 가독성을 높일 수 있다.
=> 인자의 순서를 변경할 수도 있다.
using System;
class Program {
public static void Main() {
SetRect(10, 20, 30, 40);
SetRect(x : 10, y : 20, width : 30, height : 40);
SetRect(y : 20, x : 10, width : 30, height : 40);
SetRect(10, 20, width : 30, height : 40);
}
public static void SetRect(int x, int y, int width, int height) {
Console.WriteLine($"{x}, {y}, {width}, {height}");
}
}
2. 선택적 매개 변수 (Optional Parameter)
using System;
class Program {
public static void foo(int a, int b, int c) {
Console.WriteLine($"{a}, {b}, {c}");
}
public static void Main() {
foo(1, 2, 3);
}
}
foo함수는 인자를 3개 필요로 하여 사용하려면 3개를 모두 전달해야 한다.
이 때, 인자를 부족하게 보내도 알아서 처리하게끔 하는 방법이 있다.
using System;
class Program {
public static void foo(int a = 0, int b = 0 , int c = 0) {
Console.WriteLine($"{a}, {b}, {c}");
}
public static void Main() {
foo(1, 2, 3);
foo(1, 2);
foo(1);
foo();
}
}
① 선택적 매개 변수
=> 메소드의 매개 변수에 기본값을 지정하는 문법
=> C++언어의 default parameter 개념 (https://dhshin94.tistory.com/27)
이를 위의 명명된 파라미터와 같이 쓰면 아래와 같이 쓸수도 있다.
using System;
class Program {
public static void foo(int a = 0, int b = 0 , int c = 0) {
Console.WriteLine($"{a}, {b}, {c}");
}
public static void Main() {
foo(1, 2, 3);
foo(1, 2);
foo(1);
foo();
foo(b : 10);
foo(c : 20);
}
}
3. 선택적 매개 변수의 주의사항
using System;
class Program {
public void f1(int a = 0, int b = 0, int c = 0) { } // ok
public void f2(int a, int b = 0, int c = 0) { } // ok
public void f3(int a, int b = 0, int c) { } // error
public void f4(int a = 0, int b, int c = 0) { } // error
public void f5(DateTime dt = DateTime.Now) { } // error
public void f6(DateTime dt = new DateTime()) { } // ok
public void f7(DateTime dt = default(DateTime)) { } // ok
public static void Main() {
}
}
① 선택적 매개 변수 주의 사항
=> 마지막 인자부터 차례대로 지정해야 한다.
=> 컴파일시간에 알 수 있는 상수만 초기값으로 사용할 수 있다.
728x90
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 속성 (property) (1) (0) | 2020.03.12 |
---|---|
[C#] Extension Method (0) | 2020.03.09 |
[C#] 가변 길이 매개 변수 (params) (0) | 2020.02.26 |
[C#] 인자 전달 방식 (2) (0) | 2020.02.17 |
[C#] 인자 전달 방식 (1) (0) | 2020.02.15 |