Does C# 2.0-3.0 have named arguments support for methods?
Is there a way to have named arguments like in perl/python
for example
object.method(arg1 开发者_StackOverflow=> value1, arg2 => value2, arg3 => 0);
in C# prior to C# 4.0?
method named arguments are C# 4.0 feature. (You can't have method optional parameters in C# < 4.0)
It is not possible before C# 4.0.
BTW, there is no such thing as C# 2.5.
While not an exact match for named arguments, there is something in C# 3.0 for constructors that is similar called "object initializers" that let you define values for public properties when you use the new
operator. This lets you do stuff like this:
Person p = new Person()
{
FirstName = "John",
LastName = "Doe",
Address = new Address()
{
Street = "1234 St.",
City = "Phoenix"
}
};
Now in order to utilize this you have invoke the new
operator (so it won't work for methods) and the properties that you are setting need to have the same access that they would have to allow you to do this:
Person p = new Person();
p.FirstName = "John";
p.LastName = "Doe";
Address a = new Address();
a.Street = "1234 St.";
a.City = "Phoenix";
p.Address = a;
So this won't let you circumvent public get
but protected set
properties (you can't make a property only initialized via this method). This can make your code more readable, though not to the degree that named arguments can.
精彩评论