2

有没有办法像 perl/python 那样命名参数

例如

object.method(arg1 => value1, arg2 => value2, arg3 => 0);

在 C# 4.0 之前的 C# 中?

4

3 回答 3

14

方法命名参数是 C# 4.0 的特性。(在 C# < 4.0 中不能有方法可选参数)

于 2009-11-10T13:56:02.470 回答
4

在 C# 4.0 之前是不可能的。

顺便说一句,没有 C# 2.5 这样的东西。

于 2009-11-10T13:57:02.217 回答
0

虽然命名参数不完全匹配,但 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 getprotected set这可以使您的代码更具可读性,尽管没有命名参数可以达到的程度。

于 2012-09-07T17:53:40.257 回答