当(深度)克隆自定义对象时,我应该使用clone.str1 = String.Copy(obj.str1)
or clone.str1 = obj.str1
?
我更喜欢后者——更短、更快,但它“安全”吗?
我会指出这个线程 https://stackoverflow.com/questions/520895/whats-the-use-of-system-string-copy-in-net,但是,不知道该使用什么。
是的 - 后一个选择(简单赋值)对于字符串(在托管代码中)是安全的,如以下代码所示:
string s1 = "Initial Value";
string s2 = s1;
Console.WriteLine("String1: " + s1);
Console.WriteLine("String2: " + s2);
s1 = "New Value";
Console.WriteLine("String1 - after change: " + s1);
Console.WriteLine("String2 - after change: " + s2);
Output:
String1: Initial Value
String2: Initial Value
String1 - after change: New Value
String2 - after change: Initial Value
字符串是不可变的 - 因此当您更改 s1 时,您实际上是在创建一个新字符串并对其进行赋值。 s2 的引用仍然指向旧实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)