C#中字符串前的@是什么?

这是C#(或可能是VB.net)的.NET问题,但我试图弄清楚下列声明有什么区别:

string hello = "hello";

string hello_alias = @"hello";

在控制台上打印没有区别,长度属性相同。


它将字符串标记为逐字字符串文本 - 字符串中通常会被解释为转义序列的任何内容都将被忽略。

因此"C:UsersRich"@"C:UsersRich"

有一个例外:双引号需要转义序列。 为了避免双引号,您需要在连续放置两个双引号。 例如, @""""评估为"


这是一个逐字字符串文字。 这意味着逃避不适用。 例如:

string verbatim = @"foobar";
string regular = "foobar";

这里verbatimregular的内容相同。

它还允许多行内容 - 这对SQL非常有用:

string select = @"
SELECT Foo
FROM Bar
WHERE Name='Baz'";

逐字字符串文字所必需的一点转义就是得到一个双引号(“),你可以通过双引号来实现:

string verbatim = @"He said, ""Would you like some coffee?"" and left.";
string regular = "He said, "Would you like some coffee?" and left.";

'@'还有另一个含义:将它放在变量声明的前面可以使用保留关键字作为变量名称。

例如:

string @class = "something";
int @object = 1;

我只找到一个或两个合法用途。 主要在ASP.NET MVC中,当你想要做这样的事情时:

<%= Html.ActionLink("Text", "Action", "Controller", null, new { @class = "some_css_class" })%>

这将产生一个HTML链接,如:

<a href="/Controller/Action" class="some_css_class">Text</a>

否则,你将不得不使用'Class',这不是一个保留关键字,但大写'C'不遵循HTML标准,只是看起来不正确。

链接地址: http://www.djcxy.com/p/20309.html

上一篇: What's the @ in front of a string in C#?

下一篇: What's the Hi/Lo algorithm?