기본적으로 메소드의 모든 매개변수는 필수입니다. 선택적 매개변수를 포함하는 메소드는 호출 시 인수를 강제로 전달하지 않습니다. 인수를 전달하지 않고 메서드를 호출한다는 의미입니다.
선택적 매개변수는 함수 정의의 기본값을 포함합니다. 호출 시 선택적 인수 값을 전달하지 않으면 기본값이 사용됩니다.
매개변수를 선택사항으로 만드는 다양한 방법이 있습니다.
기본값 사용
예시
using System; namespace DemoApplication{ class Demo{ static void Main(string[] args){ OptionalMethodWithDefaultValue(5); //Value2 is not passed as it is optional OptionalMethodWithDefaultValue(5, 10); //Value2 is passed Console.ReadLine(); } public static void OptionalMethodWithDefaultValue(int value1, int value2 = 5){ Console.WriteLine($"Sum is {value1 + value2}"); } } }
출력
위 코드의 출력은
Sum is 10 Sum is 15
위의 예에서 OptionalMethodWithDefaultValue(int value1, int value2 =5) value2 메서드는 기본값 5를 갖습니다. 따라서 호출하는 동안 value2에 대해 전달된 인수가 없으면 기본값 5를 사용하고 value2에 대해 인수가 전달되면 기본값은 무시됩니다.
선택적 속성 사용
예시
using System; using System.Runtime.InteropServices; namespace DemoApplication{ class Demo{ static void Main(string[] args){ OptionalMethodWithDefaultValue(5); OptionalMethodWithDefaultValue(5, 10); Console.ReadLine(); } public static void OptionalMethodWithDefaultValue(int value1, [Optional]int value2){ Console.WriteLine($"Sum is {value1 + value2}"); } } }
출력
위 코드의 출력은
Sum is 5 Sum is 15
여기서 [Optional] 속성은 선택적 매개변수를 지정하는 데 사용됩니다.
또한 선택적 매개변수는 항상 매개변수 끝에 지정해야 합니다. 예를 들어 OptionalMethodWithDefaultValue(int value1 =5, int value2)는 예외를 발생시킵니다.
예시
using System; namespace DemoApplication{ class Demo{ static void Main(string[] args){ OptionalMethodWithDefaultValue(5); OptionalMethodWithDefaultValue(5, 10); Console.ReadLine(); } public static void OptionalMethodWithDefaultValue(int value1 = 5, int value2){ Console.WriteLine($"Sum is {value1 + value2}"); } } }
오류 - 선택적 매개변수는 모든 필수 매개변수 뒤에 나타나야 합니다.