代码之家  ›  专栏  ›  技术社区  ›  Erik Funkenbusch

Resharper智能感知混乱

  •  2
  • Erik Funkenbusch  · 技术社区  · 14 年前

    今天在我的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) { }
    }
    

    当我开始键入DoWork(us)时,我从intellisense获得以下信息:

    alt text

    请注意,它正在调出构造函数参数,并以冒号结尾:userName:

    这是怎么回事?

    编辑:

    正如里德在下面回答的,这是一个新的C#4特性,名为 Named and Optional Arguments . 它的目的是允许您指定参数的名称,而不是参数在参数列表中的位置。因此,您不必记住参数在参数列表中的位置就可以使用它(尽管这在很大程度上对于intellisense是没有意义的)。不过,它确实使可选参数更易于使用。

    谢谢里德。

    2 回复  |  直到 5 年前
        1
  •  9
  •   Reed Copsey    14 年前

    这是Resharper为 Named and Optional Arugments .

    C#4增加了对这些的支持。您现在可以这样定义一个方法:

    public void DoWork(int someArgument = 3, string userName = "default") 
    {
        // ...
    

    如果您想用不同的“用户名”调用它,但保留其他参数的默认值,您可以执行以下操作:

    this.DoWork(userName: "FooUser");
    

    resharper5在intellisense中增加了对这种语法的支持。

        2
  •  2
  •   joshlrogers    14 年前

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