gpt4 book ai didi

c# - 改变 ReSharper "Complete Statement"行为

转载 作者:行者123 更新时间:2023-11-30 22:10:09 24 4
gpt4 key购买 nike

我发现我一直在与 ReSharper 的 Complete Statement (Ctrl+Shift+Enter) 行为作斗争,我想知道是否有办法对其进行自定义。

我将编辑一些代码,例如:

var a = 0;
var b = 1;

然后我想添加这个:

var a = 0;
using (var frob = new Thingy())
{
a = frob.Foo();
}
var b = 1;

如果我不使用“using”实时模板,只是输入它,我会在输入 thingy 后点击“Complete Statement”,Resharper 会将其合并为:

var a = 0;
using (var frob = new Thingy())
var b = 1;

所以,我想知道,有没有办法告诉它总是创建新的大括号,而不是尝试将下一行插入到您要添加的任何语句中?

这是使用 ReSharper 8.1。我从第 4 版开始就一直在使用它,这感觉像是一个新问题,所以也许他们已经改变了默认行为。

更新:鉴于 Thomas Weller 的回答和@Resharper 在 Twitter 上的回复,我做了更多调查。

这里好像有点不对劲。如果您查看 Complete Statement 的文档它明确指出:

With Complete Statement, instead of this tricky procedure, you only have to press Ctrl+Shift+Enter, and ReSharper will automatically insert a closing parenthesis, as well as both braces, and put the caret right where you can proceed with writing the method body In similar ways, Complete Statement is known to work with the following language constructs:

[...] Statements: if, while, do, switch, using, lock, continue, break, and return statements; case and default clauses; conversion of single-line statements to block statements.

在对此进行一些测试时,我注意到 if 语句的行为符合预期(它添加了大括号并将 carat 放在一个新行中)。 switchchecked 也是如此。

另一方面,whileusingfixed 的行为与我上面的示例一样,它选择了下一行要使用的代码而不是新 block 。

这看起来相当不一致。要么更新文档,要么所有语句类型的行为都应该相同。

因此,这似乎更适合作为错误报告而不是 SO 问题。这是 link to the bug如果有人有兴趣对其进行投票。 :)

最佳答案

您没有按预期使用 R# 的“完整语句”功能,因此该工具无法准确确定您想要实现的目标。

一旦模板在 IntelliSense 中可用,就用 Live 模板完成 using 语句,然后它会给你括号。然后,Live 模板将通过突出显示/将光标设置在适当的部分一个接一个地引导您输入语句的各个部分(不用担心,您不需要触摸鼠标)。

或者,实时模板始终可以通过实时模板资源管理器访问和编辑(实时模板类似于“普通”代码模板)。但我不建议将其用于预定义的,除非您有充分的理由这样做。

关于c# - 改变 ReSharper "Complete Statement"行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049956/

24 4 0