string类型的赋值有关问题
【求助】string类型的赋值问题
有两个问题:
1. string类型的赋值模式是否调用的复制构造函数?
即:
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
------解决思路----------------------
单单是赋值的操作,可以认为是偏向于值拷贝,但是实例指向同一个地址
有两个问题:
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
------解决思路----------------------
单单是赋值的操作,可以认为是偏向于值拷贝,但是实例指向同一个地址