我發現我一直在與ReSharper的完整聲明(Ctrl + Shift + Enter)行爲作鬥爭,我不知道是否有方法來定製它。改變ReSharper「完成聲明」的行爲
會發生什麼事,我會編輯一些代碼,例如:
var a = 0;
var b = 1;
然後,我想它添加到它:
var a = 0;
using (var frob = new Thingy())
{
a = frob.Foo();
}
var b = 1;
如果我不使用「使用「活模板,只需輸入它,我打字thingy後打完成聲明,並且Resharper將copmlete到此:
var a = 0;
using (var frob = new Thingy())
var b = 1;
所以,我想知道,有沒有辦法告訴它總是創建新的大括號,而不是嘗試將下一行插入到要添加的任何語句中?
這是使用ReSharper 8.1。自從版本4開始,我一直在使用它,這感覺像是一個新問題,所以他們可能已經改變了默認行爲。
更新: 鑑於托馬斯韋勒的回答,@Resharper在Twitter上的回覆,我做了一些更多的調查。
這裏似乎有差異。如果你看一下文檔爲Complete Statement它明確規定:
有了完整的陳述,而不是這個棘手的過程中,你只 必須按Ctrl + Shift + Enter鍵,和ReSharper的自動 插入一個右括號, 以及兩個括號,並把在那裏你可以編寫方法體 以類似的方式進行的 插入符號右移,完整的陳述是已知的 下列語言結構的工作:
[...]狀態nts:如果使用, 鎖定,繼續,斷開和返回語句,則切換,;案例和默認 條款;將單行語句轉換爲塊語句。
在測試中,我注意到if
語句的行爲與預期的一樣(它添加了大括號並將克拉放置在一個新行內)。 switch
和checked
也是如此。
另一方面,while
,using
和fixed
的行爲與我上面的示例中一樣,它共同選擇要使用的下一行代碼而不是新塊。
這似乎相當不一致。文檔應該更新,或者所有語句類型的行爲都應該是相同的。
因此,它似乎比SO問題更適合作爲錯誤報告。如果任何人有興趣將其投入使用,請撥打link to the bug。 :)
我可以確認它也發生在7.1。 –
其次,如果R#行爲不一致,那麼它更像是一個錯誤。 –
至於文檔,我認爲是我寫了那篇文檔,我可能對完整語句的適用範圍過於樂觀(或者從第4版開始可能沒有注意到迴歸,哪種類型的語句可以達到級別使用Complete語句和'using')。無論如何,Rob,非常感謝你的報告。由於目前尚未積極開發完整聲明,因此很可能要求等待很長時間才能實施。顯然,更新參考文檔是更容易遵循的途徑。 – gorohoroh