ReSharper 自动完成错误?使用 lambda scratch 参数

ReSharper autocompletion bug? with lambda scratch arguments

我正在使用 ReSharper 9.2。示例代码:

class Foo
{
   private int _someField;
   private int _someOtherField;

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

只要我在“_”后面输入“,”,R# 就决定我必须 真的 表示 _someField,而 自动插入。我在选项 > 环境 > IntelliSense > "Automatically complete single item with" 下取消选中所有三个选项(符号完成、智能完成和导入完成)。但我怀疑此功能不是导致错误的原因,因为有 2 个字段以 _ 开头,因此建议列表中应该不止一个项目。

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

有什么办法可以避免这种情况吗?

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

  1. 选项 > 环境 > IntelliSense > Autopopup > C#: 设置 both "Where value is expected" and "Letters and digits" 到 "Display but do not preselect"
  2. 选项 > 环境 > IntelliSense > 完成字符 > C# > 不完成:添加','到列表

错误似乎是 R# 没有意识到,在这种情况下,您实际上是在命名一个新变量,而是应用它的 "where value is expected" 行为。