C# 中“@”的含义是什么?
本文关键字:是什么 | 更新日期: 2023-09-27 17:55:20
新学习者的快速问题,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 帮助程序可以采用一个匿名对象,其中包含它们创建的标记的 HTML 属性。 因此,您可能会看到如下代码:
<%= Html.LabelFor(m => m.Foo, new { @class = "some-css-class" } ) %>
此处需要@
,因为class
否则是保留字。
逐字字符串文本允许您将文本放在字符串中,否则编译器会以不同的方式处理这些文本。 例如,如果我要编写文件路径并将其分配给变量,我可能会执行以下操作:
myString = "C:''Temp''Test.txt";
我必须使用双斜杠的原因是因为我正在转义斜杠,因此它不被视为命令。 如果我使用逐字字符串文字符号,我的代码可能如下所示:
myString = @"C:'Temp'Test.txt";
当您处理特殊字符时,它可以更轻松地编写字符串。