C#2.0-3.0是否有命名参数支持方法?

时间:2009-11-10 13:53:54

标签: c# syntax named-parameters

有没有办法在perl / python中添加命名参数

例如

object.method(arg1 => value1, arg2 => value2, arg3 => 0);
在C#4.0之前的C#中?

3 个答案:

答案 0 :(得分:14)

方法命名参数是C#4.0功能。 (您不能在C#< 4.0中使用方法可选参数

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

虽然不是命名参数的精确匹配,但C#3.0中有一些类似于“object initializers”的构造函数可以让您在使用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属性(您无法通过此方法初始化属性)。这可以使您的代码更具可读性,但不会达到命名参数的程度。