开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜