为什么在Visual Studio自动完成列表中有与“:”相同的变量?

时间:2010-12-14 15:17:14

标签: c# visual-studio autocomplete

使用函数时,VS自动完成列表中myVarmyVar:之间的区别是什么。为什么第二个被添加到此列表中?

4 个答案:

答案 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
}