2016-03-04 64 views
1

我使用ReSharper 9.2。示例代码:ReSharper自动完成错误?用lambda scratch参数

class Foo 
{ 
    private int _someField; 
    private int _someOtherField; 

    public Foo() 
    { 
     Action<int, int> a = (_, __) => { }; 
    } 
} 

当我键入键入“”后‘_’,R#决定我必须真的意味着_someField自动插入它。我在选项>环境>智能感知>“自动完成单个项目”下取消选中了所有三个选项(符号完成,智能完成和导入完成)。但我怀疑这个功能并不是bug的原因,因为有两个字段以_开头,所以建议列表中应该有多个单独的项目。

这也不是由于_被视为魔法字符;如果我将这些字段命名为xSomeFieldxSomeOtherField并调用临时变量x,我会得到同样的结果。

有什么办法可以防止这种情况发生?

+1

我通常在选择窗口出现时通过点击转义来处理这个问题。 – juharr

回答

1

很自然地,我在发布问题后几乎立即发现了自己的解决方法。每个是一种妥协,这意味着失去一些功能在其他地方,所以挑选你的毒药:

  1. 选项>环境>智能感知> Autopopup> C#:设置“如果预期值,” “字母和数字”,以‘显示,但不预选’
  2. 选项>环境>智能感知>完成字符> C#>不要完成:添加‘’到列表

这个错误似乎是R#没有意识到,在这种情况下,你实际上是在命名一个新的变量,而是应用了其“预期的值”行为。