|
|
|
|
移动端

2.2.3 字符串(1)

《C# 6.0本质论(第5版)》第2章数据类型,本章将探讨这些数据类型,更深入地研究字符串类型,并引入数组的概念。本节为大家介绍字符串。

作者:周靖/庞燕 译来源:人民邮电出版社|2017-07-21 15:29

【新品产上线啦】51CTO播客,随时随地,碎片化学习

2.2.3 字符串(1)

零或多个字符组成的有限序列称为字符串。C#的基本字符串类型是string,BCL名称是System.String。对于已经熟悉了其他语言的开发者,string的一些特点或许是他们意想不到的。除了第1章介绍的字符串字面量格式,字符串还包含了逐字字符串(verbatimstring)前缀字符@、带有$前缀的字符串插值,以及string属于不可变类型的事实。

1.字面量

为了将字面量字符串输入代码,要将文本放入双引号(")内,就像HelloWorld程序中那样。字符串由字符构成,所以转义序列可以嵌入字符串内。

例如,代码清单2-11显示了两行文本。不过,这里没有使用System.Console.WriteLine(),而是使用System.Console.Write()来输出换行符\n。输出2-9展示了结果。

代码清单2-11 使用字符\n插入换行符

  1. class DuelOfWits  
  2. {  
  3. static void Main()  
  4. {  
  5. System.Console.Write(  
  6. "\"Truly, you have a dizzying intellect.\"");  
  7. System.Console.Write("\n\"Wait 'til I get going!\"\n");  
  8. }  


输出2-9

  1. "Truly, you have a dizzying intellect."  
  2. "Wait 'til I get going!" 

双引号要用转义序列输出,否则会被用于定义字符串开始与结束。

在C#中,可以在字符串前面使用@符号,指明转义序列不被处理。结果是一个逐字字符串字面量(verbatim string literal),它不仅将反斜杠当作普通字符处理,还会逐字解释所有空白字符。例如,代码清单2-12的三角形会在控制台上原样输出,其中包括反斜杠、换行符以及缩进。输出2-10展示了结果。

如果不使用@字符,这些代码甚至无法通过编译。事实上,即便将形状变成正方形,避免使用反斜杠,代码仍然不能通过编译,因为不能将换行符直接插入不以@符号开头的字符串中。

代码清单2-12 使用逐字字符串字面量来显示一个三角形

输出2-10

在以@开头的字符串中,唯一支持的转义序列是"",它代表一个双引号,这个双引号不会终止字符串。

语言对比:C++ ——在编译时拼接字符串

和C++不同,C#不会自动拼接字符串字面量。例如,不能像下面这样指定一个字符串字面量:

  1. "Major Strasser has been shot. "  
  2. "Round up the usual suspects." 

必须使用+操作符进行拼接(然而,如果编译器能在编译时计算结果,最终的CIL代码包含的还是单独一个字符串)。

假如同一个字符串字面量在程序集中多次出现,编译器在程序集中只定义字符串一次,且所有变量都将指向同一个字符串。这样一来,假如在代码中多次插入包含大量字符的同一个字符串字面量,最终的程序集只反映其中一个的大小。

2. 字符串插值

我们在第1章讨论过,通过使用字符串插值格式,字符串可以支持嵌入的表达式。字符串插值语法在一个字符串字面量前加上一个$符号前缀,然后将表达式嵌入大括号中。下面一行是一个字符串插值的示例。

  1. System.Console.WriteLine($"Your full name is {firstName} {lastName}."); 

这个示例中的firstName和lastName是指向变量的简单表达式。

注意,字符串字面量可以通过在“@”符号前加上“$”符号的字符串插值组合而成,如下例所示。

  1. System.Console.WriteLine($@"Your full name is:  
  2. { firstName } { lastName }"); 

虽然这是一个字符串字面量,但输出被分成了两行。如果在代码中,在大括号后换行,就可以避免输出被分成两行,如下例所示。

  1. System.Console.WriteLine($@"Your full name is: {  
  2. firstName } { lastName }"); 

高级主题:深入理解字符串插值

字符串插值是调用string.Format()方法的简写。例如,如下的语句

  1. System.Console.WriteLine($"Your full name is {firstName} {lastName}.") 


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Head First 设计模式(中文版)

本书共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊