String类是一个功能非常强大的类,它实现许多很多有用的方法。但是,String类存在一个问题,重复修改给定的字符串,效率会很低,它实际上是一个不可变的类型,这意味着一旦对字符串对象进行了初始化,该字符串对象就不能改变了。表面上修改字符串内容的方法和运算符实际上是创建了一个新字符串,根据需要,可以把旧字符串的内容复制到新字符串中。例如,考虑下面的代码:
string greetingText = "Hello from all the people at the company. ";
greetingText += "We do hope you enjoy this book as much as we enjoyed writing it.";
在执行这段代码时,首先创建了一个System.String类型的对象,并把它初始化为文本"Hello from all the people at the company. ",注意句号后面有个空格。此时.Net运行库会为该字符串分配足够的内存来保存这个文本(41个字符),在设置变量greetingText来表示这个字符串实例。
从语法上看,下一行代码是把更多的文本添加到字符串中。实际上并非如此,在此是创建了一个新字符串实例,给它分配足够的内存,以存储合并的文本(共104个字符)。把最初的文本"Hello from all the people at the company. "复制到这个新字符串中,再加上额外的文本"We do hope you enjoy this book as much as we enjoyed writing it."。然后更新存储在变量greetingText中