当我在@“”中包含C#字符串时,这意味着什么?

时间:2011-08-29 04:41:11

标签: c# .net string

  

可能重复:
  What does @ mean at the start of a string in C#?

抱歉,我在Google上找不到此内容。我想在搜索时可能不接受我的搜索字符串。

有人能告诉我这在C#中意味着什么

var a = @"abc";

@的含义是什么?

5 个答案:

答案 0 :(得分:4)

这是string literal。这基本上意味着它将占用除"之外的任何字符,包括新行。要写出",请使用""

答案 1 :(得分:2)

  

@ -quoting的优点是不处理转义序列,   这使得编写起来很容易,例如,一个完全限定的文件   名:

@"c:\Docs\Source\a.txt"  // rather than "c:\\Docs\\Source\\a.txt"

答案 2 :(得分:1)

这意味着它是一个文字字符串。 没有它,任何包含\的字符串都会将下一个字符视为特殊字符,例如\ n表示新行。如果在前面有一个@,它会对字面进行处理。

在您给出的示例中,输出没有区别。

答案 3 :(得分:0)

这表示双引号内的字符应该完全按原样解释。

  

您可以看到反斜杠被视为字符,而不是   使用@时的转义序列。 C#编译器也允许你   在逐字文字中使用真正的换行符。您必须编码报价   带双引号的标记。

string fileLocation = "C:\\CSharpProjects";
string fileLocation = @"C:\CSharpProjects";

请查看here示例。

答案 4 :(得分:0)

  
    

C#支持两种形式的字符串文字:常规字符串文字和逐字字符串文字。

  
  • 常规字符串文字由零个或多个字符组成 在双引号中,如“hello”,并且可能包括简单的转义 序列(例如\ t表示制表符)和十六进制和 Unicode转义序列。

  • 逐字字符串文字由@字符后跟a组成 双引号字符,零个或多个字符,以及结束 双引号字符。一个简单的例子是“你好”。在逐字 字符串文字,解释分隔符之间的字符 逐字,唯一的例外是引用转义序列。在 特别是,简单的转义序列和十六进制和Unicode 转义序列不会在逐字字符串文字中处理。一个 逐字字符串文字可能跨越多行。

代码示例

string a = "hello, world";                  // hello, world
string b = @"hello, world";               // hello, world
string c = "hello \t world";               // hello     world
string d = @"hello \t world";               // hello \t world
string e = "Joe said \"Hello\" to me";      // Joe said "Hello" to me
string f = @"Joe said ""Hello"" to me";   // Joe said "Hello" to me
string g = "\\\\server\\share\\file.txt";   // \\server\share\file.txt
string h = @"\\server\share\file.txt";      // \\server\share\file.txt
string i = "one\r\ntwo\r\nthree";
string j = @"one
two
three";

参考链接:MSDN