【问题标题】:Can Resharper format case statements to start on the same line as the case itself?Resharper 可以格式化案例语句以与案例本身在同一行开始吗?
【发布时间】:2011-05-31 05:35:57
【问题描述】:

我正在尝试让 Resharper 像这样格式化 switch 语句(使用 Ctrl+E、Ctrl+C):

switch (int_i) {
    case 1  : Console.WriteLine("You entered one");
              break;
    case 2  : Console.WriteLine("You entered two");
              break;
    case 3  : Console.WriteLine("You entered three");
              break;
    default : Console.WriteLine("Please enter a number between 1 and 5");
              break;
}

我个人完全不喜欢这种风格,但它被用在我正在学习的一本书中,我希望 Resharper 帮助我以同样的方式格式化我的代码。

这里有两点需要注意:

  1. 语句必须与 case 语句在同一行开始。
  2. 冒号必须对齐,因为defaultcase 3 长,所以case 1case 2case 3 的冒号前必须有一个额外的空格。

Resharper 可以做到这一点吗?

【问题讨论】:

  • 所以你不喜欢这种风格,并且像书中那样格式化它不会增加你从书中学习的能力,但你想花时间试图弄清楚如何以这种方式格式化它?我可以看到学习如何使用 ReSharper 来做到这一点的价值微乎其微,但坦率地说,我会将精力集中在获得比这更有成效的技能上。另外,我希望你正在学习的书没有给你变量名int_i;这太可怕了。抱歉,在 600 个字符中很难听起来像个混蛋。
  • @Jason 完全同意,但是如果代码示例很复杂并且书中引用了“第 123 行”而没有任何其他上下文,那么将示例排列起来可能会很有用。
  • @Jason:我也很失望地看到一个名为int_i 的变量。然而,它确实来自书中。
  • @Tim Medora:行号确实是我想使用相同编码风格的主要原因。
  • @comecme:这是什么书?太糟糕了,我会考虑再出版一本关于同一主题的书。

标签: c# formatting resharper switch-statement


【解决方案1】:

您可以在 ReSharper - 选项 - 语言 - C# - 格式样式 中自定义代码格式,但您似乎没有任何要求。我发现的最接近的东西 - Switch 语句中的大括号格式。

【讨论】:

  • 感谢您发布答案。我已经知道您可以自定义格式,我的问题是是否可以获得我描述的格式。
【解决方案2】:

我知道这是旧的,但它是可能的。这并不明显。我刚刚偶然发现它。

转到 ReSharper 选项/代码编辑/C#/格式样式/大括号布局。选择“案例”标签下的块”以查看样本错误。现在选择其他。将其设置为“行尾(K&R 样式)”。样本中的任何内容都不会改变。再次选择 'Block under "case" label' 以查看格式现在是否正确。

我更喜欢也可以使用的 BSD 风格。

【讨论】:

  • 当我将“其他”设置从“在下一行(BSD 样式)”更改为“在行尾(K&R 样式)”时,我确实看到示例发生了变化。当我切换回“在‘案例’标签下屏蔽”时,我看不到任何变化。所以我有其他:“行尾(K&R)”和案例标签下的块:“在下一行(BSD)”。
【解决方案3】:

我认为现在有一个选择。我有版本 2017.3.2。

转到 ReSharper 选项/代码编辑/C#/格式化样式/换行符和嵌入语句的换行/排列,并将在同一行放置简单的“case”语句设置为始终。

【讨论】:

  • 这不适用于我的示例。因为每个case 有两行(WriteLinebreak),ReSharper 不认为它是一个简单 case 语句,所以它仍然会在每个@987654324 之后放置一个换行符@。即使只有一个语句,它也不会对齐冒号。它只会在 case 和语句之间放置一个空格。
猜你喜欢
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多