|
|
|
|
移动端

2.2.3 字符串(3)

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

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

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

2.2.3 字符串(3)

字符串的长度不能直接设置,它是根据字符串中的字符数计算得到的。此外,字符串的长度不能更改,因为字符串是不可变的。

7. 字符串是不可变的

string类型的关键特征在于它是不可变的(immutable)。可以为string变量赋一个全新的值,但出于性能方面的考虑,没有提供修改字符串内容的机制。所以,不可能将字符串中的字母全部转换为大写。只能新建字符串,让它成为旧字符串的大写字母版本,但旧字符串在这个过程中不会被修改。代码清单2-15展示了一个例子。

代码清单2-15 错误,string是不可变的

  1. class Uppercase  
  2. {  
  3. static void Main()  
  4. {  
  5. string text;  
  6. System.Console.Write("Enter text: ");  
  7. text = System.Console.ReadLine();  
  8. // UNEXPECTED: Does not convert text to uppercase  
  9. text.ToUpper();  
  10. System.Console.WriteLine(text);  
  11. }  

输出2-12展示了结果。

输出2-12

  1. Enter text: This is a test of the emergency broadcast system.  
  2. This is a test of the emergency broadcast system. 

从表面上看,text.ToUpper()似乎应该将text中的字符转换成大写。但由于string类型是不可变的,所以text.ToUpper()不会进行这样的修改。相反,text.ToUpper()会返回一个新字符串,它需要保存到变量中,或者直接传给System.Console.WriteLine()。代码清单2-16给出了纠正后的代码,输出2-13展示了结果。

代码清单2-16 字符串处理

  1. class Uppercase  
  2. {  
  3. static void Main()  
  4. {  
  5. string text, uppercase;  
  6. System.Console.Write("Enter text: ");  
  7. text = System.Console.ReadLine();  
  8. // Return a new string in uppercase  
  9. uppercase = text.ToUpper();  
  10. System.Console.WriteLine(uppercase);  
  11. }  

输出2-13

  1. Enter text: This is a test of the emergency broadcast system.  
  2. THIS IS A TEST OF THE EMERGENCY BROADCAST SYSTEM. 

假如忘记字符串不可变的特点,很容易就会在使用其他字符串方法时犯下和代码清单2-15相似的错误。

为了真正更改text中的值,要将ToUpper()的返回值赋回给text,如下例所示:

  1. texttext = text.ToUpper(); 

8. System.Text.StringBuilder

如果有大量字符串需要修改,比如要经历多个步骤来构造一个长字符串,那么应当使用数据类型System.Text.StringBuilder,而不是string。StringBuilder包含Append()、AppendFormat()、Insert()、Remove()和Replace()等方法。虽然string也提供了其中一些方法,但两者关键的区别在于,在StringBuilder上,这些方法会修改StringBuilder本身中的数据,而不是简单地返回一个新字符串。

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

51CTO读书频道二维码


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

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

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

读 书 +更多

网管员必读——网络基础(第2版)

本书是在《网管员必读—网络基础》(第1版)基础上修改而成的。全书共分9章,分别介绍计算机网络概述(修改)、数制(新增)、网络通信基础...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊