수색…


비고

명명 된 인수

참고 항목 : 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이됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow