当前位置: 代码迷 >> C# >> string类型的赋值有关问题
  详细解决方案

string类型的赋值有关问题

热度:330   发布时间:2016-05-05 05:31:17.0
【求助】string类型的赋值问题
有两个问题:
1. string类型的赋值模式是否调用的复制构造函数?
        即:
        
string str1 = "hello";
string str2 = str1;
//之后堆中str1和str2分别指向不同的"hello"引用?


2. 若问题1中string str2 = str1; 的确调用的复制构造函数,那么问题来了(挖掘机技术哪家强?嘿嘿)
        我想把str1的引用赋给str2,让str2与str1指向同一个"hello"字符串,要怎么做?

------解决思路----------------------
指向的是同一个 字符串实例。
------解决思路----------------------
"hello" 是类型为String的对象
对象赋值 传递的是引用,不是把值赋值过去
------解决思路----------------------
没有问题2了,两个指向一个"Hello"
------解决思路----------------------
string是个引用类型,本来就是指向同一个hello
问题就是C#里的引用类型不同于C里的指针,只能说类似
你给引用类型赋值的时候,是将它指向了一个新的引用地址,而不是修改被引用的对象
------解决思路----------------------
string是特殊引用类型,但赋值的时候并没有你说的复制,而是都指向了HELLO,当str1发生变化,仅str1指向的地址发生变化,str2仍然指向HELLO,所以str2不改变。如果要str2随str1改变,请使用StringBuilder
------解决思路----------------------
单单是赋值的操作,可以认为是偏向于值拷贝,但是实例指向同一个地址
  相关解决方案