C#で名前付きパラメーターとオプションのパラメーターを使用する方法

Microsoftは、C#4.0で名前付きパラメーターとオプションパラメーターのサポートを導入しました。名前付きパラメーターは、位置ではなく引数の名前に基づいて引数を指定するために使用されますが、オプションのパラメーターを使用して、メソッドシグネチャーの1つ以上のパラメーターを省略することができます。メソッドのパラメーターは、メソッドが呼び出されたときにこれらのパラメーターに値を渡す必要があるかどうかに応じて、必須またはオプションのいずれかになります。

名前付きパラメーターとオプションのパラメーターは、メソッドだけでなく、インデクサーやデリゲートでも使用できることに注意してください。この記事では、C#プログラミング言語のこれら2つの強力な機能と、それらを使用する方法について説明します。

この記事で提供されているコード例を使用するには、システムにVisual Studio2019がインストールされている必要があります。まだコピーをお持ちでない場合は、こちらからVisual Studio2019をダウンロードできます。

VisualStudioでコンソールアプリケーションプロジェクトを作成します

まず、VisualStudioで.NETCoreコンソールアプリケーションプロジェクトを作成しましょう。Visual Studio 2019がシステムにインストールされていると仮定して、以下に概説する手順に従って、VisualStudioで新しい.NETCoreコンソールアプリケーションプロジェクトを作成します。

  1. Visual StudioIDEを起動します。
  2. 「新しいプロジェクトの作成」をクリックします。
  3. 「新規プロジェクトの作成」ウィンドウで、表示されたテンプレートのリストから「コンソールアプリ(.NETCore)」を選択します。
  4. [次へ]をクリックします。
  5. 次に表示される[新しいプロジェクトの構成]ウィンドウで、新しいプロジェクトの名前と場所を指定します。
  6. [作成]をクリックします。

これにより、Visual Studio2019で新しい.NETCoreコンソールアプリケーションプロジェクトが作成されます。このプロジェクトを使用して、この記事の後続のセクションで名前付きパラメーターとオプションのパラメーターを操作します。

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)

{{

    Add(5、10);

}

Addメソッドのシグネチャに6つの必須パラメーター(オプションのパラメーターはありません)があるため、上記のコードは機能しませんが、2つの引数のみを渡しました。次のエラーが表示されます。

したがって、以下に示すコードスニペットに示すように、呼び出しを満たすために各パラメーターに値を渡す必要があります。

static void Main(string [] args)

{{

   Add(5、10、8、2、3、6);

}

メソッドのパラメーターにデータ型が混在していると、事態は複雑になります。これを説明するために、次のコードスニペットに示すようにAddメソッドを変更してみましょう。

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

{{

    x + y + z + Convert.ToInt32(a)+ Convert.ToInt32(b)+ Convert.ToInt32(c);を返します。

}

パラメータのデータ型とその位置を覚えておくのは面倒です。これに対する解決策は、以下に示すコードスニペットに示すように、名前付き引数を利用してメソッドに値を渡すことです。

static void Main(string [] args)

{{

    Add(x:5、y:10、z:8、a:2.0、b:3.0、c:6.0);

}

以下のコードスニペットに示すように、名前付き引数の順序を変更することもできます。

static void Main(string [] args)

{{

    Add(z:8、x:5、y:10、c:6、a:2.0、b:3.0);

}

引数に名前を付ける限り、任意の順序で引数を渡すことができ、コンパイラはエラーにフラグを立てません。つまり、これはC#で完全に有効です。

C#でオプションのパラメーターを使用する

C#プログラミング言語のオプションのパラメーターを使用すると、メソッドの呼び出し元が自由に省略できるメソッドシグネチャの引数を指定できます。つまり、必須パラメーターの値を指定する必要がありますが、オプションのパラメーターの値を指定しないことを選択する場合があります。場合によっては、オプションのパラメータにデフォルト値が関連付けられていることもあります。

オプションのパラメータのデフォルト値には、定数式、値型の形式の式、またはdefault(v)の形式の式(vは値)の3種類の値のいずれかがあります。タイプ。

次のコードスニペットに示されているAddメソッドは、C#のメソッドにオプションの引数を指定する方法を示しています。

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

{{

    x + y + zを返します。

}

そして、これがAddメソッドを呼び出す方法です。

Add(10);

Addメソッドの2つのパラメーターはオプションであるため、メソッドを呼び出すときに単一の整数値をメソッドに渡すことができます。メソッドでパラメーターを定義する正しい順序に従うように注意してください。必須パラメーターが最初に来て、オプションのパラメーターが存在する場合はそれが続きます。

COM APIとの相互運用性を向上させるために、名前付きおよびオプションのパラメーターがC#プログラミング言語に導入されました。名前付きパラメーターを使用すると、ソースコードの可読性を向上させることができます。また、メソッド定義が同一の場合に、オーバーロードされたメソッドを使用する代わりに、オプションのパラメーターを利用できます。

C#でさらに多くのことを行う方法:

  • C#で流暢なインターフェイスとメソッドチェーンを使用する方法
  • C#で静的メソッドを単体テストする方法
  • C#で神オブジェクトをリファクタリングする方法
  • 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#でDapperORMを使用する方法
  • C#でフライウェイトデザインパターンを使用する方法