C# 语言标准--2.4.4.5 字符串
C# 支持两种形式的字符串:规则字符串和逐字字符串。
规则字符串由包含在双引号中的零个或多个字符组成(如 "hello
"),并且可以包含简单转义序列(如表示制表符的 t
)、十六进制转义序列和 Unicode 转义序列。
逐字字符串由 @
字符后跟开始的双引号字符、零个或多个字符以及结束的双引号字符组成。一个简单的示例就是 @"hello"
。在逐字字符串中,分隔符之间的字符逐字解释,唯一的例外是“引号转义序列”。具体说来,在逐字字符串中不处理简单转义序列以及十六进制和 Unicode 转义序列。逐字字符串可以跨多行。
- string-literal:(字符串:)
- regular-string-literal(规则字符串)
verbatim-string-literal(逐字的字符串) - regular-string-literal:(规则字符串:)
- " regular-string-literal-charactersopt "(" 规则字符串字符可选 ")
- regular-string-literal-characters:(规则字符串字符:)
- regular-string-literal-character(规则字符串字符)
regular-string-literal-characters regular-string-literal-character(规则字符串字符 规则字符串字符) - regular-string-literal-character:(规则字符串字符:)
- single-regular-string-literal-character(单个规则字符串字符)
simple-escape-sequence(简单转义序列)
hexadecimal-escape-sequence(十六进制转义序列)
unicode-escape-sequence(unicode 转义序列) - single-regular-string-literal-character:(单个规则字符串字符:)
- 除 " (U+0022)、 (U+005C) 和换行符外的任何字符
- verbatim-string-literal:(逐字的字符串:)
- @" verbatim -string-literal-charactersopt
"
(@" 逐字的字符串字符可选 ") - verbatim-string-literal-characters:(逐字的字符串字符:)
- verbatim-string-literal-character(逐字的字符串字符)
verbatim-string-literal-characters verbatim-string-literal-character(逐字的字符串字符 逐字的字符串字符) - verbatim-string-literal-character:(逐字的字符串字符:)
- single-verbatim-string-literal-character(单个逐字的字符串字符)
quote-escape-sequence(引号转义序列) - single-verbatim-string-literal-character:(单个逐字的字符串字符:)
- 除 " 外的任何字符
- quote-escape-sequence:(引号转义序列:)
- ""
规则字符串字符中跟在反斜杠字符 () 后面的字符必须是下列字符之一:
'
、"
、、
0
、a
、b
、f
、n
、r
、t
、u
、U
、x
、v
。否则将发生编译时错误。
示例
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"; // \serversharefile.txt string h = @"\serversharefile.txt"; // \serversharefile.txt string i = "onerntwornthree"; string j = @"one two three";
显示了各种不同的字符串。最后一个字符串 j
是跨多行的逐字字符串。引号之间的字符(包括空白,如换行符等)也逐字符保留。
由于十六进制转义序列可以包含数目可变的十六进制数字,因此字符串 "x123"
只包含一个具有十六进制值 123 的字符。若要创建一个包含具有十六进制值 12 的字符,后跟一个字符 3 的字符串,可以改写为 "x00123"
或 "x12" + "3"
。
“字符串”的类型为 string
。
[1] [2] 下一页
每个字符串不一定产生新的字符串实例。当根据字符串相等运算符(第 7.9.7 节)确认为相等的两个或更多个字符串出现在同一个程序集中时,这些字符串引用相同的字符串实例。例如,
class Test { static void Main() { object a = "hello"; object b = "hello"; System.Console.WriteLine(a == b); } }
产生的输出为 True
,这是因为两个字符串引用相同的字符串实例。
上一页 [1] [2]
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>