如何防止在单行if语句之间放置空行?

时间:2018-12-04 00:50:59

标签: c# resharper rider

在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始终将它们替换时,这会很令人烦恼。

1 个答案:

答案 0 :(得分:3)

您要查找的设置可以通过以下导航找到: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,使用单行块时将获得所需的格式化行为。