它被称为逐字字符串文字,并使用@前缀.
没有前缀,它仍然是一个字符串文字 - 它是一个常规的字符串文字.
(有些人错误地认为术语"字符串文字"仅适用于逐字字符串文字,但它更普遍.)
逐字字符串文字对以下内容非常有用:
请注意,这只会在编译时产生影响.换句话说,这两个陈述完全相同:
string x = "foo\\bar"; // Regular string literal
string x = @"foo\bar"; // Verbatim string literal
Run Code Online (Sandbox Code Playgroud)
逐字字符串文字仍然以与常规字符串文字相同的方式实现,仍然引用System.String
等实例.
从C#4.0规范的 2.4.4.5节:
常规字符串文字由用双引号括起来的零个或多个字符组成,如"hello",并且可以包括简单转义序列(例如用于制表符的\ t),以及十六进制和Unicode转义序列.
逐字字符串文字由@字符后跟双引号字符,零个或多个字符以及结束双引号字符组成.一个简单的例子就是@"你好".在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是quote-escape-sequence.特别是,简单转义序列以及十六进制和Unicode转义序列不会在逐字字符串文字中处理.逐字字符串文字可以跨越多行.
请注意,@也可以用作前缀,以允许您将关键字用作标识符:
int class = 10; // Invalid
int @class = 10; // Valid
Run Code Online (Sandbox Code Playgroud)
这很少有用,但如果必须使用特定标识符,有时可能需要这样做.(例如,class
关键字对ASP.NET MVC中的匿名类型属性很有用.)
@
string sLiteral = @"This will be formatted. Even including
return characters,
and spaces at the start of lines";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2753 次 |
最近记录: |