【问题标题】:How to make Visual Studio to automatically include curly brackets in C# code?如何使 Visual Studio 在 C# 代码中自动包含大括号?
【发布时间】:2010-03-01 12:51:17
【问题描述】:

namespaceclassstructenumforforeachwhileswitchswitchdo、@987654330 和@@7 之后方法的开头,Visual Studio 不应该自动包含大括号吗?如何激活此功能?

【问题讨论】:

  • 它如何知道何时开始大括号? public class MyClass? public class MyClass : MyBase? public class MyClass : MyBase, Interface, Interface 2?您可以看到在大多数情况下知道何时开始会很痛苦......自动将您的开放式大括号与闭合大括号匹配,这是可行的。
  • 如果我只在循环中放一个语句,为什么它会在一个while语句之后放一个花括号?
  • 遵守 Microsoft 初学者编码风格指南...

标签: c# visual-studio visual-studio-2008 syntax


【解决方案1】:

使用 Resharper 大括号自行添加(立即或按 Enter 后)。我认为非重新锐化的 Visual Studio 也是如此,但不能 100% 确定这一点。只有左括号你必须自己写。

目前 Resharper 5.0 是免费的(只要它处于 beta/夜间构建状态),您只需每 20-30 天重新安装一次(但无论如何您都希望这样做,因为他们倾向于修复/添加东西) .没有 Resharper,我再也无法编码了 :-) 节省了很多时间!不知道当它不再是 beta 时我会做什么;/

编辑:

借助 Resharper,您甚至可以让 IDE 在某些情况下使用或不使用大括号(在可能的情况下)。查看 link 关于 Resharper 中的代码格式化。

【讨论】:

  • ReSharper 代码格式还可以在整个项目中添加大括号,只需单击几下。 jetbrains.com/resharper/features/code_formatting.html
  • 或删除它们,具体取决于设置:-)
  • 没有 Resharper 的我的 Visual Studio 不会添加右大括号
  • 选项 -> 文本编辑器 -> C# -> 格式化 -> 新行 如果这没有成功,那么我猜 Resharper 就是那个成功的 ;)
【解决方案2】:

一种选择是使用代码片段。 Visual Studio 已经为命名空间、枚举、for、foreach、while、switch、do、using 和 unchecked 提供了 sn-ps。有关如何使用 sn-ps 的说明,请转到 here

如果你能想到一个对你的类和结构有意义的 sn-p,你可以create your own snippet

【讨论】:

    【解决方案3】:

    Devexpress 有 Visual Studio 的工具

    CodeRush

    【讨论】:

      【解决方案4】:

      IDE 无法确定您是否不想创建单行。

      Resharper 确实让事情变得更容易。如果您输入“{”并按回车,将自动生成“}”。

      【讨论】:

        【解决方案5】:

        如果您按 CTRL+K、CTRL+S,这将为您提供一个 sn-p 选项,它将自动创建您选择的任何选项。

        【讨论】:

        • 这是 Edit.SurroundWith 它可能有一些其他的键绑定。如果某些人在 CTRL+K、CTRL+S 中没有它,他们仍然可以从上下文菜单中获取它,或者查看工具 -> 选项... -> 环境 -> 键盘 -> “Edit.SurroundWith” 来查看他们有什么约束力。
        【解决方案6】:

        这很容易,你不必使用 R#。

        只写“if, else, for, foreach...”,然后按TAB。将自动创建大括号,并且您的光标会跳转到圆括号。如果圆括号中有更多控件(例如 for(control1; control2; control3)),那么您可以通过按 TAB 在此控件之间切换。如果您完成了控件的更改,则可以按 Enter 键,光标将跳转到大括号主体。

        但是如果你想写新的“方法、类、...”,我通常使用通用快捷键“ctrl+.”。

        例如写入一些方法(例如 MyMethod)调用尚未创建的新方法(例如 MyNewMethod):

        private void MyMethod()
        {
          string[] a = this.MyNewMethod(5, "something");
        }
        

        然后将光标设置为“MyNewMethod”,按“ctrl+”。然后按回车。

        新方法会在这个类结束时自动创建:

        private void MyMethod()
        {
          string[] a = this.MyNewMethod(5, "something");
        }
        
        private string[] MyNewMethod(int v1, string v2)
        {
          throw new NotImplementedException();
        }
        

        【讨论】:

          【解决方案7】:

          对于命名空间、类、结构、枚举和开关,你是对的。语法强制你得到一个左大括号,但我认为你不能强制 VS 这样做(不使用加载项)。

          在其他情况下,左大括号是可选的,如果后面只有一个语句,有些人不希望有大括号。所以,即使可以,VS也无法自动添加大括号。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-10-27
            • 2016-07-07
            • 2021-01-05
            • 1970-01-01
            • 2019-02-25
            • 1970-01-01
            相关资源
            最近更新 更多