簡體   English   中英

C#中“@”的含義是什么

[英]What's the meaning of “@” in C#

新學習者的快速問題,C#代碼中“@”的含義是什么?

例子:

ClientDataSource.Where = @"it.ClientID==1";
cont.Notes = @"";
Response.Redirect(@"~/Default.aspx");

謝謝!

這是一個逐字字符串文字

MSDN將其描述為

當字符串文本包含反斜杠字符時,例如在文件路徑中,使用逐字字符串是為了方便和更好的可讀性。 因為逐字字符串將新行字符保留為字符串文本的一部分,所以它們可用於初始化多行字符串。 使用雙引號在逐字字符串中嵌入引號。

@也可用於創建與保留字匹配的標識符2.4.2標識符

例如:

var class = "Reading"; // compiler error
var @class = "Math"; // works

@"...."表示逐字字符串文字 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是保留字。

逐字字符串文字允許您將文本放在字符串中,否則編譯器將對其進行不同的處理。 例如,如果我要編寫文件路徑並將其分配給變量,我可能會這樣做:

myString = "C:\\Temp\\Test.txt";

我必須有雙斜杠的原因是因為我正在逃避斜線,所以它不被視為命令。 如果我使用逐字字符串文字符號,我的代碼可能如下所示:

myString = @"C:\Temp\Test.txt";

在處理特殊字符時,可以更輕松地編寫字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM