【问题标题】:Does C# 2.0-3.0 have named arguments support for methods?C# 2.0-3.0 是否支持方法的命名参数?
【发布时间】:2010-12-15 01:18:01
【问题描述】:

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

例如

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

在 C# 4.0 之前的 C# 中?

【问题讨论】:

  • 有 C# 2.5 吗?这应该是 3.5 吗?
  • .NET 3.5, C# 3.0 ...,俗称“C# 3.5”
  • 肯定是 3.5,而不是 2.5 - 只是打错了
  • @C.Ross - 这是一个常见的错误!语言规范适用于 C# 3.0 - msdn.microsoft.com/en-us/vcsharp/aa336809.aspx
  • 对不起,我还生活在 C#2/.Net 2.0 的世界里……

标签: c# syntax named-parameters


【解决方案1】:

虽然与命名参数不完全匹配,但在 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 属性(你不能让一个属性只通过这个方法初始化)。这可以使您的代码更具可读性,尽管没有命名参数可以达到的程度。

【讨论】:

    【解决方案2】:

    方法命名参数是 C# 4.0 的特性。 (在 C#

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-10-08
        • 2012-12-04
        • 1970-01-01
        • 2015-12-21
        • 2013-04-26
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 2017-12-04
        相关资源
        最近更新 更多