44

我开始注意到,当我在 C# 中进行方法调用时,我正在调用的方法的参数名称将显示在智能感知列表中,并附加一个冒号,然后我可以格式化该方法如此称呼:

MethodCall(parameter1:value1, parameter2:value2);

这是一个新的语言功能吗?它让我想起了在 SQL 中调用存储过程并指定参数名称的方式,如下所示:

spDoSomeStuff @param1 = 1, @param2 = 'other param'

这是一个类似的功能吗?如果是这样,目的是什么?如果不是,它是什么以及它的用途是什么。

4

5 回答 5

44

这是一个新功能。请参见此处: http: //msdn.microsoft.com/en-us/library/dd264739.aspx 例如,命名参数在 ObjectiveC 中是标准的。习惯它们需要一些时间,但它们是一件好事。只有通过查看,您才能知道参数的含义。

于 2011-03-10T16:27:02.830 回答
24

命名参数允许您以独立于签名的自定义顺序显式设置参数的值。方法签名由参数类型定义,即 Foo( int i, bool b ),它只接受 int 和 bool 类型的参数。命名参数允许您先传递 b,然后再传递 i。

于 2011-03-10T16:29:20.237 回答
20

值得一提的是,与可选参数不同,您可以跳过某些参数,只传递您感兴趣的参数。

public void Example(int required, string StrVal = "default", int IntVal = 0)
{
    // ...
}

public void Test()
{
    // This gives compiler error
    // Example(1, 10);

    // This works
    Example(1, IntVal:10);
}
于 2014-03-20T18:11:49.740 回答
5

Scott Gu 在他的博客中介绍了这个新功能:

C# 4 中的可选参数和命名参数

于 2011-03-10T16:27:46.497 回答
2

它是C# 4 附带的命名参数和可选参数。

于 2011-03-10T16:27:50.893 回答