C #에서 명명 및 선택적 매개 변수를 사용하는 방법

Microsoft는 C # 4.0에서 명명 된 매개 변수와 선택적 매개 변수에 대한 지원을 도입했습니다. 이름이 지정된 매개 변수는 위치가 아닌 인수의 이름을 기반으로 인수를 지정하는 데 사용되지만 선택적 매개 변수를 사용하여 메소드 서명에서 하나 이상의 매개 변수를 생략 할 수 있습니다. 메서드의 매개 변수는 메서드가 호출 될 때 이러한 매개 변수에 값을 전달해야하는지 여부에 따라 필수 또는 선택 사항 일 수 있습니다.

명명 된 매개 변수와 선택적 매개 변수는 메서드뿐만 아니라 인덱서 및 대리자에서도 사용할 수 있습니다. 이 기사에서는 C # 프로그래밍 언어의 이러한 두 가지 강력한 기능과이를 사용하는 방법에 대해 설명합니다.

이 문서에 제공된 코드 예제를 사용하려면 시스템에 Visual Studio 2019가 설치되어 있어야합니다. 아직 복사본이없는 경우 여기에서 Visual Studio 2019를 다운로드 할 수 있습니다.

Visual Studio에서 콘솔 애플리케이션 프로젝트 만들기

먼저 Visual Studio에서 .NET Core 콘솔 애플리케이션 프로젝트를 만들어 보겠습니다. Visual Studio 2019가 시스템에 설치되어 있다고 가정하고 아래에 설명 된 단계에 따라 Visual Studio에서 새 .NET Core 콘솔 애플리케이션 프로젝트를 만듭니다.

  1. Visual Studio IDE를 시작합니다.
  2. "새 프로젝트 만들기"를 클릭합니다.
  3. "새 프로젝트 만들기"창의 표시된 템플릿 목록에서 "콘솔 앱 (.NET Core)"을 선택합니다.
  4. 다음을 클릭하십시오.
  5. 다음에 표시된 "새 프로젝트 구성"창에서 새 프로젝트의 이름과 위치를 지정합니다.
  6. 생성을 클릭합니다.

그러면 Visual Studio 2019에서 새로운 .NET Core 콘솔 애플리케이션 프로젝트가 생성됩니다.이 프로젝트를 사용하여이 문서의 후속 섹션에서 명명 된 매개 변수와 선택적 매개 변수를 사용합니다.

C #에서 명명 된 매개 변수 사용

메서드, 생성자, 인덱서 또는 대리자를 호출 할 때 필수 매개 변수에 대한 인수를 전달해야하지만 선택적 매개 변수로 정의 된 매개 변수에 대한 인수를 생략 할 수 있습니다.

매개 변수가 많은 메소드를 종종 호출해야 할 수도 있습니다. 그리고 필요한 매개 변수만으로 이러한 메서드를 호출하는 경우에도 어떤 인수가 어떤 매개 변수에 매핑되는지 이해하기가 매우 어렵습니다. 여기에 명명 된 인수가 구출되는 곳이 있습니다.

C # 프로그래밍 언어의 명명 된 인수는 메서드의 인수 이름을 해당 값 (즉, 메서드 호출시 인수로 전달 된 값)과 연결하는 데 사용됩니다. 명명 된 인수를 사용할 때 인수는 전달 된 순서와 동일한 순서로 평가된다는 점에 유의해야합니다.

예를 살펴 보겠습니다. 새 콘솔 응용 프로그램 프로젝트의 Program 클래스 내에 Add라는 다음 메서드를 작성합니다.

public static int Add (int x, int y, int z, int a, int b, int c)

{

   반환 x + y + z + a + b + c;

}

아래 코드 조각에 표시된대로 Add 메서드를 호출한다고 가정 해 보겠습니다.

static void Main (string [] args)

{

    추가 (5, 10);

}

Add 메서드의 시그니처에 6 개의 필수 매개 변수 (선택 매개 변수가 없음)가 있지만 두 개의 인수 만 전달했기 때문에 위 코드는 작동하지 않습니다. 다음 오류가 표시됩니다.

따라서 아래 제공된 코드 스 니펫에 표시된대로 호출을 충족시키기 위해 각 매개 변수에 값을 전달하는 데 제한이 있습니다.

static void Main (string [] args)

{

   추가 (5, 10, 8, 2, 3, 6);

}

메소드의 매개 변수에 데이터 유형이 혼합되어 있으면 상황이 복잡해집니다. 이를 설명하기 위해 다음 코드 스 니펫에 표시된대로 Add 메서드를 수정 해 보겠습니다.

public static int Add (int x, int y, int z, double a, double b, double c)

{

    return x + y + z + Convert.ToInt32 (a) + Convert.ToInt32 (b) + Convert.ToInt32 (c);

}

매개 변수의 데이터 유형과 위치를 기억하는 것은 번거 롭습니다. 이에 대한 해결책은 명명 된 인수를 활용하고 아래에 제공된 코드 스 니펫에 표시된대로 값을 메소드에 전달하는 것입니다.

static void Main (string [] args)

{

    추가 (x : 5, y : 10, z : 8, a : 2.0, b : 3.0, c : 6.0);

}

아래에 제공된 코드 스 니펫에 표시된대로 명명 된 인수의 순서를 변경할 수도 있습니다.

static void Main (string [] args)

{

    추가 (z : 8, x : 5, y : 10, c : 6, a : 2.0, b : 3.0);

}

인수의 이름을 지정하는 한 임의의 순서로 전달할 수 있으며 컴파일러는 오류 플래그를 지정하지 않습니다. 즉, 이것은 C #에서 완벽하게 유효합니다.

C #에서 선택적 매개 변수 사용

C # 프로그래밍 언어의 선택적 매개 변수를 사용하면 메서드 호출자가 자유롭게 생략 할 수있는 메서드 서명에 인수를 지정할 수 있습니다. 즉, 필수 매개 변수에 대한 값을 지정해야하지만 선택적 매개 변수에 대한 값을 지정하지 않도록 선택할 수 있습니다. 경우에 따라 선택적 매개 변수에도 이와 연관된 기본값이있을 수 있습니다.

선택적 매개 변수의 기본값은 상수 표현식, 값 유형 형식의 표현식 또는 default (v) 형식의 표현식 (여기서 v는 값)의 세 가지 값 중 하나를 가질 수 있습니다. 유형.

다음 코드 조각에 표시된 Add 메서드는 C #의 메서드에 선택적 인수를 지정하는 방법을 보여줍니다.

public static int Add (int x, int y = 0, int z = 0)

{

    반환 x + y + z;

}

그리고 여기에 Add 메서드를 호출하는 방법이 있습니다.

추가 (10);

Add 메서드의 매개 변수 중 두 개는 선택 사항이므로 호출 할 때 메서드에 단일 정수 값을 전달할 수 있습니다. 메소드에서 매개 변수를 정의하는 적절한 순서를 따르십시오. 필수 매개 변수가 먼저 와야하며 선택 매개 변수가 있으면 그 다음에 와야합니다.

COM API와의 상호 운용성을 향상시키기 위해 명명 된 매개 변수와 선택적 매개 변수가 C # 프로그래밍 언어에 도입되었습니다. 명명 된 매개 변수를 사용하면 소스 코드의 가독성을 높일 수 있습니다. 또한 메서드 정의가 동일 할 때 오버로드 된 메서드를 사용하는 대신 선택적 매개 변수를 활용할 수 있습니다.

C #에서 더 많은 작업을 수행하는 방법 :

  • C #에서 유창한 인터페이스 및 메서드 체인을 사용하는 방법
  • C #에서 정적 메서드를 단위 테스트하는 방법
  • C #에서 God 개체를 리팩터링하는 방법
  • C #에서 ValueTask를 사용하는 방법
  • C에서 불변성을 사용하는 방법
  • C #에서 const, readonly 및 static을 사용하는 방법
  • C #에서 데이터 주석을 사용하는 방법
  • C # 8에서 GUID를 사용하는 방법
  • C #에서 추상 클래스와 인터페이스를 사용하는 경우
  • C #에서 AutoMapper를 사용하는 방법
  • C #에서 람다 식을 사용하는 방법
  • C #에서 Action, Func 및 Predicate 대리자를 사용하는 방법
  • C #에서 대리자를 사용하는 방법
  • C #에서 간단한 로거를 구현하는 방법
  • C #에서 특성을 사용하는 방법
  • C #에서 log4net으로 작업하는 방법
  • C #에서 리포지토리 디자인 패턴을 구현하는 방법
  • C #에서 리플렉션을 사용하는 방법
  • C #에서 filesystemwatcher로 작업하는 방법
  • C #에서 지연 초기화를 수행하는 방법
  • C #에서 MSMQ를 사용하는 방법
  • C #에서 확장 메서드를 사용하는 방법
  • C #에서 람다 식 사용 방법
  • C #에서 volatile 키워드를 사용하는 경우
  • C #에서 yield 키워드를 사용하는 방법
  • C #에서 다형성을 구현하는 방법
  • C #에서 자신 만의 작업 스케줄러를 빌드하는 방법
  • C #에서 RabbitMQ로 작업하는 방법
  • C #에서 튜플을 사용하는 방법
  • C #에서 가상 및 추상 메서드 탐색
  • C #에서 Dapper ORM을 사용하는 방법
  • C #에서 플라이 웨이트 디자인 패턴을 사용하는 방법