有没有办法像 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
这可以使您的代码更具可读性,尽管没有命名参数可以达到的程度。