C# 语言规范--2.4.4.5 字符串(转)

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

规则字符串由包含在双引号中的零个或多个字符组成(如 "hello"),并且可以包含简单转义序列(如表示制表符的 )、十六进制转义序列和 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:(引号转义序列:)
""

规则字符串字符中跟在反斜杠字符 () 后面的字符必须是下列字符之一:'"0abfnrtuUxv。否则将发生编译时错误。

示例

string a = "hello, world";                  // hello, worldstring b = @"hello, world";               // hello, worldstring c = "hello 	 world";               // hello     worldstring d = @"hello 	 world";               // hello 	 worldstring e = "Joe said "Hello" to me";      // Joe said "Hello" to mestring f = @"Joe said ""Hello"" to me";   // Joe said "Hello" to mestring g = "\serversharefile.txt";   // serversharefile.txtstring h = @"serversharefile.txt";      // serversharefile.txtstring i = "one
two
three";string j = @"onetwothree";

显示了各种不同的字符串。最后一个字符串 j 是跨多行的逐字字符串。引号之间的字符(包括空白,如换行符等)也逐字符保留。

由于十六进制转义序列可以包含数目可变的十六进制数字,因此字符串 "x123" 只包含一个具有十六进制值 123 的字符。若要创建一个包含具有十六进制值 12 的字符,后跟一个字符 3 的字符串,可以改写为 "x00123""x12" + "3"

“字符串”的类型为 string

每个字符串不一定产生新的字符串实例。当根据字符串相等运算符(第 7.9.7 节)确认为相等的两个或更多个字符串出现在同一个程序集中时,这些字符串引用相同的字符串实例。例如,

class Test{   static void Main() {      object a = "hello";      object b = "hello";      System.Console.WriteLine(a == b);   }}

产生的输出为 True,这是因为两个字符串引用相同的字符串实例。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8781179/viewspace-924532/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8781179/viewspace-924532/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值