更新时间:2022-08-31 13:51:50
一、string的确是引用类型
常规上是这样定义的:
string是引用类型,但是其又具有值类型的一些特性。
图1
由图1可以总结出下面几点:
1、string的引用特性
(1)引用给引用赋值,是将两个引入都同指向同一片内存,并没有开发新的内存。
str2=str1,这样大家都指向了”I am a number”所在的内存,并没有新开辟一片内存。
(2)字符串给引用赋值,新开辟了一块内存,并让引用指向该内存。
2、string的值特性说明
(1)、使用引用传参数,是传值调用。
在函数中传递string(比如函数参数是string型)时,传递的是地址,但却不能修改成员变量,原因是它重新又创建了一个全新的对象,和它想修改的那个成员变量非同一地址,所以看上去像是值类型;
(2)、对一些类对象进行浅拷贝时,string类型也能够被复制。
主要原因是string类型定义中的一段解释:
另外,str1 == str2 ,仅仅是比较了值,而非地址(是MS重写了==运算符所致).
二. ”@”在string中的用法
都知道如果要使用转义字符的话,需要在字符前加上”\”,而C#提供了一种新的机制,使用”@”.在”@”后的字符串都看作是原意,不会解释为转义字符串.并且以”@”开头的字符串支持回车换行的显示方式(见下例).不过会增加到字符串长度,不推荐过多使用.
参考并修改博客:
http://www.cnblogs.com/tling091223/archive/2009/12/23/1630338.html