C# Language
명명 된 인수와 선택적 인수
수색…
비고
명명 된 인수
참고 항목 : MSDN 명명 된 인수를 사용하면 매개 변수 목록의 매개 변수 위치가 아닌 매개 변수 이름과 인수를 연결하여 특정 매개 변수에 대한 인수를 지정할 수 있습니다.
MSDN이 말했듯이,
- 매개 변수의 이름을 연결하여 인수를 함수에 전달할 수 있습니다.
- 우리가 항상 알지 못하는 매개 변수 위치를 기억할 필요가 없습니다.
- 호출 된 함수의 매개 변수 목록에서 매개 변수의 순서를 볼 필요가 없습니다.
- 이름별로 각 인수에 대한 매개 변수를 지정할 수 있습니다.
선택적 인수
Ref : MSDN 메서드, 생성자, 인덱서 또는 대리자의 정의는 해당 매개 변수가 필수이거나 선택적이라는 것을 지정할 수 있습니다. 모든 호출은 모든 필수 매개 변수에 대한 인수를 제공해야하지만 선택적 매개 변수에 대한 인수는 생략 할 수 있습니다.
MSDN이 말했듯이, Optional Argument,
- 인수가 선택적 인수 인 경우 호출에서 인수를 생략 할 수 있습니다.
- 모든 선택적 인수에는 고유 한 기본값이 있습니다.
- 값을 제공하지 않으면 기본값을 사용합니다.
- 선택적 인수의 기본값은 a이어야합니다.
- 상수 표현.
- enum 또는 struct와 같은 값 유형이어야합니다.
- 형식 default (valueType)의 표현식이어야합니다.
- 매개 변수 목록의 끝에서 설정해야합니다.
명명 된 인수
우리의 함수 호출은 다음과 같습니다.
FindArea(120, 56);
이 첫 번째 인수는 길이 (즉, 120)이고 두 번째 인수는 너비 (즉, 56)입니다. 그리고 우리는 그 함수에 의해 면적을 계산합니다. 다음은 함수 정의입니다.
private static double FindArea(int length, int width)
{
try
{
return (length* width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
따라서 첫 번째 함수 호출에서 인수를 인수로 전달했습니다. 권리?
double area;
Console.WriteLine("Area with positioned argument is: ");
area = FindArea(120, 56);
Console.WriteLine(area);
Console.Read();
이것을 실행하면 다음과 같은 출력을 얻게됩니다.
이제 여기에 이름 지정된 인수의 특징이 있습니다. 위의 함수 호출을 참조하십시오.
Console.WriteLine("Area with Named argument is: ");
area = FindArea(length: 120, width: 56);
Console.WriteLine(area);
Console.Read();
여기에서는 메소드 호출에서 이름 지정된 인수를 제공합니다.
area = FindArea(length: 120, width: 56);
이제이 프로그램을 실행하면 동일한 결과가 나타납니다. 명명 된 인수를 사용하는 경우 메소드 호출에서 이름을 반대로 지정할 수 있습니다.
Console.WriteLine("Area with Named argument vice versa is: ");
area = FindArea(width: 120, length: 56);
Console.WriteLine(area);
Console.Read();
명명 된 인수의 중요한 용도 중 하나는 프로그램에서 이것을 사용할 때 코드의 가독성을 향상시키는 것입니다. 그것은 당신의 주장이 무엇을 의미하는지 또는 그것이 무엇인지를 간단하게 말합니다.
당신은 위치적인 주장도 줄 수 있습니다. 즉, 위치 인수와 명명 된 인수의 조합입니다.
Console.WriteLine("Area with Named argument Positional Argument : ");
area = FindArea(120, width: 56);
Console.WriteLine(area);
Console.Read();
위의 예제에서 우리는 매개 변수 너비에 대해 길이를 120으로하고 명명 된 인수로 56을 전달했습니다.
몇 가지 제한 사항이 있습니다. 우리는 이제 명명 된 논의의 한계를 논의 할 것입니다.
명명 된 인수 사용 제한
고정 인수가 지정되면 명명 된 인수 스펙이 나타나야합니다.
고정 인수 앞에 이름 지정된 인수를 사용하면 다음과 같이 컴파일 시간 오류가 발생합니다.
모든 고정 인수가 지정된 후에는 명명 된 인수 스펙이 나타나야합니다.
선택적 인수
앞에서 우리의 함수 정의에 선택적 인수를 고려하십시오.
private static double FindAreaWithOptional(int length, int width=56)
{
try
{
return (length * width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
여기서는 width 값을 선택적으로 설정하고 값을 56으로 지정했습니다. 참고하면 IntelliSense 자체는 아래 이미지와 같이 선택적 인수를 표시합니다.
Console.WriteLine("Area with Optional Argument : ");
area = FindAreaWithOptional(120);
Console.WriteLine(area);
Console.Read();
컴파일하는 동안 오류가 발생하지 않았으며 다음과 같이 출력됩니다.
선택적 속성 사용.
선택적 인수를 구현하는 또 다른 방법은 [Optional]
키워드를 사용하는 것입니다. 선택적 인수의 값을 전달하지 않으면 해당 데이터 유형의 기본값이 해당 인수에 지정됩니다. Optional
키워드는 "Runtime.InteropServices"네임 스페이스에 있습니다.
using System.Runtime.InteropServices;
private static double FindAreaWithOptional(int length, [Optional]int width)
{
try
{
return (length * width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
area = FindAreaWithOptional(120); //area=0
함수를 호출하면 두 번째 인수가 전달되지 않고 int의 기본값이 0이고 제품이 0이므로 0이됩니다.