新学习者的快速问题, 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