使用函数时,VS自动完成列表中myVar
和myVar:
之间的区别是什么。为什么第二个被添加到此列表中?
答案 0 :(得分:20)
C#4.0介绍了named arguments。此功能允许您通过名称而不是位置来识别方法参数:
public void Foo(int bar, string quux)
{
}
// Before C# 4.0:
Foo(42, "text");
// After C# 4.0:
Foo(bar: 42, quux: "text");
// Or, equivalently:
Foo(quux: "text", bar: 42);
智能感知已更新为支持该功能,这就是为什么当自当前范围可访问的符号与方法参数同名时,其自动完成机制现在提供两种选择。
答案 1 :(得分:6)
这可能是在调用方法时为参数设置值时,是吗?在C#.NET 4中,您可以在调用方法时设置named parameters。这样就无需按设定的顺序输入参数。
private void MyMethod(int width, int height){
// do stuff
}
//These are all the same:
MyMethod(10,12);
MyMethod(width: 10, height: 12);
MyMethod(heigh: 12, width: 12);
答案 2 :(得分:2)
这是一个非常酷的功能。它允许您的代码更容忍参数排序更改......
答案 3 :(得分:2)
除了其他人写的内容:第一个是(本地)变量或字段,而最后一个是被调用方法的参数名称。在代码中:
private void MyFirstMethod(int myVar)
{
Console.WriteLine(myVar);
}
private void MySecondMethod(int myVar)
{
MyFirstMethod(myVar); // Call with the value of the parameter myVar
MyFirstMethod(myVar: myVar); // Same as before, but explicitly naming the parameter
MyFirstMethod(5); // Call with the value 5
MyFirstMethod(myVar: 5); // Same as before, but explicitly naming the parameter
}