如果你有接触过C++,副本和“变量的引用”这一概念是一样的 可以当成:申请一块新内存,存放原有变量的值
那小菜菜 我问你 副本的概念就是创建一个全新的对象是吗?
我已经说了:那是画蛇添足 你把 向此实例追加指定字符串的副本 涂掉就可以了 string a = "abc"; string b = a; 这不就是传值吗?非要说 b 是 a 的副本也还可以说的过去 要是说 b 是 a 的新实例,就说不过去了吧?
深拷贝和浅拷贝。 浅拷贝即是引用,只是添加一个指针,指向当前对象,对象只有一个。 深拷贝,则是clone(克隆),也称创建副本等等,会把当前对象复制一份,成为一个一模一样的全新对象。深拷贝后会有2个独立的对象。 -------- StringBuilder类里有一个方法叫Append(String s) 它的解释是向此实例追加指定字符串的副本。 这句话的意思是:把字符串s的值克隆一份(可能是生成一个临时匿名值,也可能没有临时变量而是直接clone至缓冲区,具体看内部机制)并直接追加到StringBuilder缓冲区。
辞海 对 副本 的解释:著作原稿以外的誊录本 字符串不是对象,所以 创建一个新实例 是不准确的
画蛇添足! 字符串本身就是传值的(复制的那一份就称副本) 被他那么一解释,似乎字符串在大多情况下都是传引用的了
这个翻译是那本书上的。。。 应该是想表达Append(String)不改变string本身的值 比如string s = "2"; StringBuilder sb = new StringBuilder("1").Append(s); sb.Append("3"); sb是123.2后面接了一个3,但s还是2,后面并没有接3
string s = "2"; StringBuilder sb = new StringBuilder("1").Append(s); sb.Append("3");
111,129
社区成员
642,533
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧