2015-11-28 53 views
7

在Visual Studio 2015,當我去通過鍵入開口大括號寫在可變內插串「{」,以實現下列操作:爲什麼Visual Studio爲C#6插值字符串創建雙閉合括號?

var a = $"{}"; 

第二結束托架被自動插入,紅色或粉紅色,作爲這樣

var a = $"{}}" 

插入括號內的可變後「{}」,並試圖編譯時,Visual Studio引發錯誤:「CS8086:A‘}’字符必須(通過加倍)進行轉義在插入的字符串中「。這是有道理的,但並不能解釋爲什麼第二個'}'出現在第一位!我不想寫一個'}'文字字符;我只是想寫一個常規的插值字符串 - 一個'}'用於一個'{'。每次我使用插值字符串時,我都不得不手動刪除這個異常的第二個右括號以便成功編譯。

最奇怪的是,它似乎並不總是發生。如果您從插入的字符串中刪除「{}}」,並再次輸入一個「{」,則最終會以{{}結尾 - 就像您首先要做的那樣。

這是怎麼回事?

+2

這不是主題。幫助中心明確指出,問題可能包含「程序員常用的軟件工具」 –

+3

VS2015 RTM有許多編輯器錯誤和怪癖,但這不是其中之一。你必須尋找一個加載項,並向所有者提交一個錯誤。 –

回答

6

這是由Resharper引起的。

你可以去

工具|選項| ReSharper |一般|現在暫停

然後再試一次。額外的}將不會出現。 (我試過用R#10.0)

在R#插入額外的}後,我一直在努力解決這個問題,但它仍然有點煩人。

我想這應該被報告爲R#網站上的錯誤(除非它已被最近的版本修復)。

[編輯]我把它報告爲the Resharper forums上的一個bug。一旦MODS批准它,我的錯誤報告應該出現在那裏。

+3

在ReSharper選項 - >環境 - >編輯器 - >編輯器行爲下禁用「自動插入右大括號」似乎可以解決這個問題,但奇怪的是,我發現在禁用此選項後沒有區別一般auto-closing-brace-insertion-對於大括號,在工具 - >選項 - >文本編輯器 - > C# - >常規下有一個Visual Studio設置「自動大括號完成」,這可能與ReSharper的設置有關) – lordmilko

相關問題