如何防止空行位于单行 if 语句之间?
Posted
技术标签:
【中文标题】如何防止空行位于单行 if 语句之间?【英文标题】:How to prevent empty lines being places between single-line if statements? 【发布时间】:2018-12-04 00:50:59 【问题描述】:在 Rider(对于那些不知道的人来说,基本上是一个独立的 ReSharper)中,我不明白为什么自动代码格式化会在我的 if 语句之间放置一个空行。
格式化前:
string output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
if (output == "") Console.WriteLine(i); else Console.WriteLine(output);
格式化后:
string output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
if (output == "") Console.WriteLine(i); else Console.WriteLine(output);
我终其一生都无法弄清楚执行此操作的设置,但是当您将多个类似的单行 if 语句组合在一起并且 Rider/ReSharper 一直在替换它们时,这非常令人恼火。
【问题讨论】:
更正:Rider 是一个 IDE; ReSharper 是一个代码分析工具。File -> Settings -> Editor -> Code Style -> C# -> Blank Lines) Blank Lines in Code
: 'After statements with child blocks' 你有什么价值?如果将此值设置为 0,它是否按预期工作?
@John 你是对的,但是 Rider 使用相同的代码分析技术,并且与 ReSharper 有很多相似之处,因为它们都是由 JetBrains 开发的。
但这并不能使 Rider 成为“独立的 ReSharper”。这只是意味着他们在 Rider IDE 中包含了他们的代码分析工具 (ReSharper)。如果它是一个独立的 ReSharper,它将能够分析代码但不允许您编辑或编译它等。
@JonathonChase 是的,效果很好。正是我需要的,谢谢。随意在下面添加一个问题答案,以便我可以将其标记为已解决。如果没有,我会自己为将来有类似/相同问题的其他人做。
【参考方案1】:
您要查找的设置可以通过以下导航找到:File -> Settings -> Editor -> Code Style -> C# -> Blank Lines
在Blank Lines in Code
小节下,您正在寻找After statements with child blocks
。此特定设置在您的案例中添加行的原因是包含大括号。
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
也可以写成
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
语句将不再被视为具有子块,因此不受影响。如果保留大括号是您想要的样式的一部分,您可以将After statements with child blocks
的值设置为0
,您将获得使用单行块时所需的格式化行为。
【讨论】:
啊,我知道出了点问题。我更改了大括号设置,因为我更喜欢它的外观,但我不知道它会影响这个特定设置。谢谢。以上是关于如何防止空行位于单行 if 语句之间?的主要内容,如果未能解决你的问题,请参考以下文章