2010-03-01 96 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(); 
} 
相關問題