我开始注意到,当我在C#中进行方法调用时,我调用的方法的参数名称将显示在附加冒号的intellisense列表中,然后我可以因此格式化方法调用:
MethodCall(parameter1:value1, parameter2:value2);
这是一种新的语言功能吗?它让我想起了在SQL中调用存储过程的方式,并指定参数名称,如下所示:
spDoSomeStuff @param1 = 1, @param2 = 'other param'
这是一个类似的功能吗?如果是这样,到底是什么?如果没有,它是什么以及它用于什么。
答案 0 :(得分:36)
这是一项新功能。见这里:http://msdn.microsoft.com/en-us/library/dd264739.aspx 例如,命名参数是ObjectiveC中的标准参数。它需要一些时间来适应它们,但它们是一件好事。只有从你看,你可以告诉参数是什么意思。
答案 1 :(得分:20)
命名参数允许您以独立于签名的自定义顺序显式设置参数的值。方法签名由参数类型定义,即Foo(int i,bool b),它只接受int和bool类型的参数。命名参数允许您先传递b和第二个传递。
答案 2 :(得分:11)
值得一提的是,与可选参数不同,您可以跳过某些参数并仅传递您感兴趣的参数。
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);
}
答案 3 :(得分:5)
Scott Gu在他的博客中介绍了这个新功能:
答案 4 :(得分:2)
这是C#4带来的Named and Optional Parameters。
答案 5 :(得分:0)
@Krumelur说“例如,命名参数是ObjectiveC中的标准参数。”
这实际上并不正确。 Objective-C使用中缀表示法,以便此消息调用:
$(".select").click(function(){
debugger;
var lang = $('#lang').val();
var lang1 = lang;
});
是 setRed:Green:Blue:消息(包括那些冒号!),其中(255,255,0)个参数散布在消息名称中。
尽管如此,乍一看,Objective-C的语法给出了Objective-C使用命名参数的外观。但这实际上并不正确,误解差异可能会妨碍学习Objective-C。
(我会在评论中回答,但我不知何故失去了所有的声望点,我重新开始.Drat.C'est la vie。)