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 个字段以 _
开头,因此建议列表中应该不止一个项目。
这也不是因为 _
被视为魔法角色;如果我将字段命名为 xSomeField
和 xSomeOtherField
并调用临时变量 x
,我会得到同样的结果。
有什么办法可以避免这种情况吗?
当然,我在发布问题后几乎立即就自己发现了解决方法。每一个都是妥协,意味着在其他地方失去一些功能,所以选择你的毒药:
- 选项 > 环境 > IntelliSense > Autopopup > C#: 设置 both "Where value is expected" and "Letters and digits" 到 "Display but do not preselect"
- 选项 > 环境 > IntelliSense > 完成字符 > C# > 不完成:添加','到列表
错误似乎是 R# 没有意识到,在这种情况下,您实际上是在命名一个新变量,而是应用它的 "where value is expected" 行为。
我正在使用 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 个字段以 _
开头,因此建议列表中应该不止一个项目。
这也不是因为 _
被视为魔法角色;如果我将字段命名为 xSomeField
和 xSomeOtherField
并调用临时变量 x
,我会得到同样的结果。
有什么办法可以避免这种情况吗?
当然,我在发布问题后几乎立即就自己发现了解决方法。每一个都是妥协,意味着在其他地方失去一些功能,所以选择你的毒药:
- 选项 > 环境 > IntelliSense > Autopopup > C#: 设置 both "Where value is expected" and "Letters and digits" 到 "Display but do not preselect"
- 选项 > 环境 > IntelliSense > 完成字符 > C# > 不完成:添加','到列表
错误似乎是 R# 没有意识到,在这种情况下,您实际上是在命名一个新变量,而是应用它的 "where value is expected" 行为。