perl/python のように名前付き引数を持つ方法はありますか
例えば
object.method(arg1 => value1, arg2 => value2, arg3 => 0);
C# 4.0 より前の C# では?
perl/python のように名前付き引数を持つ方法はありますか
例えば
object.method(arg1 => value1, arg2 => value2, arg3 => 0);
C# 4.0 より前の C# では?
メソッドの名前付き引数は C# 4.0 の機能です。(C# < 4.0 ではメソッドのオプション パラメーターを使用できません)
C# 4.0 より前では不可能です。
ところで、C# 2.5 のようなものはありません。
名前付き引数と完全に一致するわけではありませんが、C# 3.0 には、演算子を使用するときにパブリック プロパティの値を定義できる、 "オブジェクト初期化子new
" と呼ばれる類似のコンストラクターがあります。これにより、次のようなことができます。
Person p = new Person()
{
FirstName = "John",
LastName = "Doe",
Address = new Address()
{
Street = "1234 St.",
City = "Phoenix"
}
};
これを利用するには、オペレーターを呼び出しますnew
(メソッドでは機能しません)。設定するプロパティには、これを行うために必要な同じアクセス権が必要です。
Person p = new Person();
p.FirstName = "John";
p.LastName = "Doe";
Address a = new Address();
a.Street = "1234 St.";
a.City = "Phoenix";
p.Address = a;
したがって、これは回避できませんpublic get
がprotected set
、プロパティです (このメソッドを介して初期化されたプロパティのみを作成することはできません)。これにより、名前付き引数ほどではありませんが、コードが読みやすくなります。