当(深)克隆时,使用String.Copy或str1 = str2?

ser*_*hio 3 .net string clone

当(深)克隆自定义对象时,我应该使用clone.str1 = String.Copy(obj.str1)还是clone.str1 = obj.str1

我更喜欢后者 - 更短更快,但它"安全"吗?

我指的是这个帖子,但是,不知道该用什么.

Rob*_*ine 10

是 - 后一个选项(简单赋值)对于字符串是安全的(在托管代码中),因为此代码说明:

    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);
Run Code Online (Sandbox Code Playgroud)

输出:

String1: Initial Value
String2: Initial Value
String1 - after change: New Value
String2 - after change: Initial Value
Run Code Online (Sandbox Code Playgroud)

字符串是不可变的 - 因此当您更改s1时,您实际上是在创建一个新字符串并分配它.s2的引用仍然指向旧实例.