代码之家  ›  专栏  ›  技术社区  ›  Arseny

string.clone()的用途是什么?

  •  27
  • Arseny  · 技术社区  · 14 年前

    代码有两个示例: α1

     string str1 = "hello";
     string str2 = str1; //reference to the same string
     str1 = "bye"; //new string created
    

    和2

    string str3 = "hello";
    string str4 = (string)str3.Clone();//reference to the same string
    str3 = "bye";//new string created
    

    看起来它们是一样的,不是吗?那么使用clone()有什么好处呢?当我不能使用代码1而使用代码2时,你能给我举个例子吗?

    3 回复  |  直到 14 年前
        1
  •  24
  •   Elisha    14 年前

    这很有用,因为字符串实现 可逗留的 ,以便可以为以下集合创建克隆的副本: 可逗留的 项目。当集合只包含字符串时,这很无聊,但是当集合包含多个实现 可逗留的 .

    至于复制单个字符串,它没有用处,因为它通过设计返回对自身的引用。

        2
  •  21
  •   Jonathan    14 年前

    不是直接回答您的问题,但是如果您希望实际克隆一个字符串,您可以使用static string.copy()方法。

        3
  •  3
  •   Zaki    14 年前

    上面代码中的.clone()与简单赋值相同。另外,字符串是不可变的,因此在这两种情况下,它都将在写时复制。

    .clone()在使用不同类型实现相同接口(在本例中为iclonable)的情况下会更有用,因为您无法使用简单的赋值,但仍可以将clone()返回的对象强制转换为iclonable并分配该引用。例如,使用ICloneable元素遍历泛型集合。