Resharper intellisense混乱

Eri*_*sch 2 resharper intellisense optional-parameters c#-4.0

今天我在Resharper 5的副本中发生了一些奇怪的事情.我有一个看起来像这样的类:

public class Foo
{
    public string Username { get; private set; }

    public Foo (string userName) { Username = userName; }

    public void Bar()
    {
        DoWork(Username);
    }

    public void DoWork(string userName) { }
}
Run Code Online (Sandbox Code Playgroud)

当我开始输入DoWork时(我们从intellisense获得以下内容:

alt text http://i50.tinypic.com/285zfd.png

请注意,它正在提取构造函数参数,并以冒号结束:userName:

这里发生了什么?

编辑:

正如Reed在下面回答的那样,这是一个名为Named和Optional Arguments的新C#4功能.它的目的是允许您指定参数的名称,而不是它在参数列表中的位置.所以你不必记住参数列表中参数的位置来使用它(尽管这对于intellisense来说基本上没有意义).它确实使可选参数更容易使用.

谢谢里德.

Ree*_*sey 9

这是Resharper为Named和Optional Arugments提供intellisense支持.

C#4增加了对这些的支持.您现在可以使用如下定义的方法:

public void DoWork(int someArgument = 3, string userName = "default") 
{
    // ...
Run Code Online (Sandbox Code Playgroud)

如果要使用不同的"userName"调用它,但保留其他参数的默认值,则可以执行以下操作:

this.DoWork(userName: "FooUser");
Run Code Online (Sandbox Code Playgroud)

Resharper 5在intellisense中添加了对此语法的支持.