“@”在c#中意味着什么

可能重复:
何时在c#中使用@?

Fe string sqlSelect = @"SELECT * FROM Sales".

这意味着将以下字符串解释为文字。 意思是,字符串中的\实际上是输出中的"\" ,而不是必须将"\\"表示为文字字符

在字符串之前它允许不同的字符串格式规则。 您不能使用反斜杠指定特殊符号和“”(双引号成为引号)。 我发现这种格式对正则表达式非常有用

 Console.WriteLine(@"\n""\/a"); // outputs \n"\/a Console.WriteLine("\\n\"\"\\/a"); // outputs \n"\/a 

您可能还会在变量前看到@符号。 在这种情况下,它允许使用特殊的C#关键字作为变量。

例:

 var @switch = 1; var @if = "test"; 

有两种类型的字符串文字,常规和逐字。 @符号使其成为逐字字符串文字。

MSDN:字符串文字(C#)

这意味着不需要在这样的字符串中转义字符。

因此,如果要编写c:\ Windows的路径,可以将其写为

 string path = "c:\\Windows"; // Note escaped '\' 

要么

 string path = @"c:\Windows"; // '\' need not be escaped 

逐字字符串文字以@开头,也用双引号括起来。 例如:

 @"good morning" // a string literal 

尼克,请查看示例上方的最后几行以获取更多信息。 http://msdn.microsoft.com/en-us/library/362314fe.aspx

在C和C ++中,string有一些称为“转义字符”的特殊字符。 例如\&"本身就是逃脱角色!

以非常正常的方式,您可以打印如下语句:

南希说你好世界! &微笑

你必须像下一个设置你的字符串

 string str = "Nancy said Hello World! \& smiled."; 

但是微软的人在C#编译器中创建了一个新的酷function,所以你可以通过在任何字符串之前添加@来摆脱处理转义字符的麻烦,编译器将自己处理所有的转义字符。 对于最后一个示例,您可以在C#中使用下一个:

 string str = @"Nancy said Hello World! & smiled."; 

用于字符串文字。 它将引号(“)中的字符串标记为值,而不对该字符串中的符号应用任何解释。

它允许你有一个带有\ delimiter的字符串。 @"C:\A\b\c\d\e\f"是合法的。