新學習者的快速問題, C#代碼中「@」的含義是什麼?C#中「@」的含義是什麼
例子:
ClientDataSource.Where = @"it.ClientID==1";
cont.Notes = @"";
Response.Redirect(@"~/Default.aspx");
謝謝!
新學習者的快速問題, C#代碼中「@」的含義是什麼?C#中「@」的含義是什麼
例子:
ClientDataSource.Where = @"it.ClientID==1";
cont.Notes = @"";
Response.Redirect(@"~/Default.aspx");
謝謝!
MSDN describes it as such:爲了方便和更好的可讀性當字符串文本包含反斜槓字符,例如在文件路徑
使用逐字字符串。因爲逐字字符串將新行字符保留爲字符串文本的一部分,所以它們可用於初始化多行字符串。使用雙引號將引號嵌入逐字字符串中。
@
也可以用於創建匹配保留字的標識符:2.4.2 Identifiers
例如:
var class = "Reading"; // compiler error
var @class = "Math"; // works
@"...."
表示verbatim string literal。除了""
(允許在字符串中包含"
字符)之外,C#不處理字符串中的任何轉義字符。
這樣可以更輕鬆,更清潔地處理字符串,否則這些字符串需要有一堆轉義才能正確處理。例如,文件/文件夾路徑。
string filePathRegular = "C:\\Windows\\foo\\bar.txt";
string filePathVerbatim = @"C:\Windows\foo\bar.txt";
它在編寫正則表達式以及可能還有很多其他的東西時也非常有用。
值得注意的是,C#還使用@
字符作爲前綴以允許保留字用作標識符。例如,ASP.Net MVC中的Html Helpers可以爲其創建的標籤提供一個包含HTML屬性的匿名對象。所以,你可能會看到這樣的代碼:
<%= Html.LabelFor(m => m.Foo, new { @class = "some-css-class" }) %>
的@
這裏需要因爲class
否則保留字。
如果您使用'@',您必須使用''''''''''來避免引號 – 2011-05-09 02:25:05
C#也允許NEWLINE(和其他?)在非逐字字符串文字中無效 – 2011-05-09 02:25:47
@Matthew - You當然是對的,謝謝你的回覆,我已經糾正了我的帖子。 – 2011-05-09 02:30:56
逐字字符串字面值允許您將文本放入字符串中,否則編譯器會對其進行不同處理。例如,如果我打算寫一個文件路徑,並將其分配給一個變量,我可能會做一些像這樣:
myString = "C:\\Temp\\Test.txt";
我之所以有雙斜槓是因爲我逃避了斜槓所以它不被視爲一個命令。如果我使用逐字字符串符號,我的代碼可能如下所示:
這使得它更容易寫,當你在處理特殊字符的字符串。
更具體地說,一個逐字字符串文字。 – BoltClock 2011-05-09 02:20:15
感謝您的相當有用的答案! – Oak 2011-05-09 02:23:03
它也可以用來創建匹配保留字的標識符:http://msdn.microsoft.com/en-us/library/aa664670.aspx – 2011-05-09 02:23:54