C#中"@"的含义是什么

Oak*_*Oak 4 c#

新学习者的快速问题,C#代码中"@"的含义是什么?

例子:

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

谢谢!

Joh*_*han 13

这是一个逐字字符串文字.

MSDN将其描述为:

当字符串文本包含反斜杠字符时,例如在文件路径中,使用逐字字符串是为了方便和更好的可读性.因为逐字字符串将新行字符保留为字符串文本的一部分,所以它们可用于初始化多行字符串.使用双引号在逐字字符串中嵌入引号.

@也可用于创建与保留字匹配的标识符:2.4.2标识符

例如:

var class = "Reading"; // compiler error
var @class = "Math"; // works
Run Code Online (Sandbox Code Playgroud)


And*_*per 5

@"...."表示逐字字符串文字.C#不处理字符串中的任何转义字符,除了""(允许"在字符串中包含字符).

这使得处理字符串变得更容易和更清晰,否则这些字符串需要有一堆逃逸才能正确处理.例如,文件/文件夹路径.

string filePathRegular = "C:\\Windows\\foo\\bar.txt";
string filePathVerbatim = @"C:\Windows\foo\bar.txt";
Run Code Online (Sandbox Code Playgroud)

它在编写正则表达式时也非常有用,可能还有很多其他的东西.

值得注意的是,C#还使用该@字符作为前缀,以允许将保留字用作标识符.例如,ASP.Net MVC中的Html Helpers可以为其创建的标记采用包含HTML属性的匿名对象.所以你可能会看到这样的代码:

<%= Html.LabelFor(m => m.Foo, new { @class = "some-css-class" } ) %>
Run Code Online (Sandbox Code Playgroud)

@这里需要的,因为class否则保留字.