2010-03-01 95 views
8

和后namespaceclassstructenumforforeachwhileswitchdousingunchecked在方法的开始,不应该的Visual Studio自动包含大括号?如何激活此功能?如何使Visual Studio自动在C#代码中包含大括号?

+2

它怎么会知道什么时候开始的花括号? '公共类MyClass'? '公共类MyClass:MyBase'? '公共类MyClass:MyBase,接口,接口2'?在大多数情况下,你可以看到知道什么时候开始会很痛苦......自动匹配你的开放大括号和闭幕大括号,这是可行的。 – 2010-03-01 12:57:40

+3

如果我只在循环中放置一条语句,它为什么会在一段时间之后放入大括号? – 2010-03-01 12:59:12

+2

符合微软编码风格指南的初学者... – Joe 2010-03-01 13:12:42

回答

3

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

如果你能想到一个对你的类和结构有意义的代码片段,你可以使用create your own snippet

5

随着Resharper卷曲关闭括号本身(立即或按下输入后)添加。我认为对于非重新调整的Visual Studio也是如此,但并不是100%确定的。只有开头括号,你必须自己写。

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

编辑:

随着ReSharper的,你甚至可以得到IDE使用大括号或无法在某些情况下使用它们(如果有可能)。看看这个link关于Resharper中的代码格式。

+0

只需点击几下鼠标,ReSharper代码格式也可以在整个项目中添加大括号。 http://www.jetbrains.com/resharper/features/code_formatting.html – jrummell 2010-03-01 13:25:42

+0

或删除它们,具体取决于设置:-) – MadBoy 2010-03-01 13:32:06

+0

我是一个巨大的Resharper粉丝。 – 2010-03-01 13:38:25

0

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

在其他情况下,开放大括号是可选的,并且有些人以后不想拥有大括号。所以,即使可以,VS也不能自动添加大括号。

1

如果您不想创建一个班轮,IDE无法确定。

虽然resharper确实让事情变得更简单。如果您输入“{”并按Enter键,则会自动生成“}”。

2

的DevExpress有工具用于Visual Studio

CodeRush

1

如果按CTRL + K,CTRL + S这会给你的,它会自动创建你选择哪个选项选择一个片段。

+0

这是Edit.SurroundWith它可能有一些其他的键绑定。如果sombody在CTRL + K,CTRL + S中没有它,他们仍然可以从上下文菜单中获取它或查看工具 - >选项... - >环境 - >键盘 - >“Edit.SurroundWith”以查看他们有什么约束力。 – Theraot 2012-10-11 03:53:27

0

这很容易,你没有使用R#。

只写“if,else,for,foreach ...”,然后按TAB。大括号将自动创建,并且您的光标跳转到圆括号。如果在圆括号中有更多的控件(例如(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(); 
} 
相关问题