web-dev-qa-db-ja.com

C#でオプションのパラメータをスキップする方法は?

例:

public int foo(int x, int optionalY = 1, int optionalZ = 2) { ... }

私はそれをこのように呼びたいです:

int returnVal = foo(5,,8); 

つまり、xzを提供したいのですが、YoptionalY = 1.のデフォルトを使用したいと思います。

VisualStudioは,,が好きではありません

助けてください。

40
Ian Davis

これがC#4.0の場合、名前付き引数機能を使用できます。

foo(x: 5, optionalZ: 8); 

詳細については、 このブログ を参照してください。

65
Josiah Ruddell

C#4.0では、デフォルトをスキップした後に発生する引数に次のように名前を付けることができます。

_int returnVal = foo(5, optionalZ: 8);
_

これは 名前付き引数 と呼ばれます。他のいくつかの言語がこの機能を提供しており、代わりに構文foo(5, optionalZ=8)を使用するのが一般的です。これは、他の言語のコードを読むときに知っておくと便利です。

17
moinudin

選択したパラメーターを提供するもう1つの動的な方法は、メソッドをクラスに実装し、名前付きパラメーターをクラスコンストラクターに提供することです。ここで説明したのと同じコード行でメソッドへの呼び出しを追加しないのはなぜですか: 名前付きパラメーターの定義方法C#

var p = new PersonInfo {Name = "Peter"、Age = 15} .BuildPerson();

0
tofo

これは遅い答えですが、これに入る人々のために。メソッド/関数と同じ名前を使用するが、パラメーターのセットが異なるオーバーロードを使用することもできます。

ea

int SummAll (int a=0, int b=1, int c=2)
{return a+b+c;}

int SumAll (int a=0;int c=10) //skipping B 
{return a+c; }

このパターンは、インテリジェンスを使用してさまざまな機能を閲覧する方法と同じです。

0
user3800527