2013-10-23 106 views
3

我用我的asp.net mvc應用程序的resharper來格式化代碼,它在@ DisplayName屬性中用@改變了我所有的代碼。我試圖在谷歌搜索這裏找到@這裏做了什麼,但我找不到滿意的搜索結果。編寫一些關於在displayname屬性中使用out和out之間的區別的告訴我。Asp.net mvc顯示名稱屬性@

[DisplayName("Meeting Date")] 
[DisplayName(@"Meeting Date")] 
+1

它不會修改該屬性,而是修改字符串的解釋方式。 '@'表示不要轉義字符串中的字符。在你展示的具體例子中,它沒有任何區別,但它允許你在你的字符串中有反斜槓。 – zimdanen

+0

http://stackoverflow.com/questions/556133/whats-the-in-front-of-a-string-in-c – zimdanen

回答

4

這是在屬性中完成的事實並不重要。使用字符串文字前面的「@」字符被稱爲逐字字符串,並會導致忽略任何轉義序列,讓您做到這一點:

var filename = @"C:\Filename.ext" 

,而不是這樣的:

var filename = "C:\\Filename.ext" 

很多人喜歡這樣,因爲它更漂亮。 Resharper喜歡在字符串前面加上'@'符號。

正如我記得Resharper建議您將可本地化的字符串移動到資源文件或逐字。在你的情況下,它看起來像你接受了建議(明確或通過代碼清理)逐字逐字地。您可以在Resharper - > Options - > Code Editing - > C# - > Context Actions - > Convert to verbatim string下關閉逐字串建議。

實際上,我不確定爲什麼ReSharper會檢測到Attribute構造函數的值爲localizable,因爲它們必須是編譯時常量,所以它可能會基於其他條件做到這一點。快速發送電子郵件至[email protected]應該很快爲您解決問題。

注:的「@」符號也可以以一個保留字的前面使用,以便使用,作爲一個變量名,雖然這不是在上面的例子的情況下:

var @string = "string"; 
+1

還應該提到的是,除了忽略轉​​義序列並允許使用保留字外,它允許你跨越多行而不用連接。 – Justin

+1

@Justin,從技術上講,這屬於允許通常需要用\轉義字符的類別。在這種情況下,它將允許字符串中的文字換行而不是通常的\ n。 –