抱歉,我在Google上找不到此内容。我想在搜索时可能不接受我的搜索字符串。
有人能告诉我这在C#中意味着什么
var a = @"abc";
@
的含义是什么?
答案 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