来自MSDN上的String.Clone()
:
返回的值不是此实例的独立副本,它只是相同数据的另一视图。使用Copy或CopyTo方法创建具有与此实例相同值的单独String对象。
由于Clone方法仅返回现有字符串实例,因此几乎没有直接调用它的理由。
我认为String是一个引用类型,这意味着当调用字符串时,您将始终获得对字符串对象的引用。
那么为什么会存在String.Clone()?它的目的是什么?
来自MSDN上的String.Clone()
:
返回的值不是此实例的独立副本,它只是相同数据的另一视图。使用Copy或CopyTo方法创建具有与此实例相同值的单独String对象。
由于Clone方法仅返回现有字符串实例,因此几乎没有直接调用它的理由。
我认为String是一个引用类型,这意味着当调用字符串时,您将始终获得对字符串对象的引用。
那么为什么会存在String.Clone()?它的目的是什么?
这很有用,因为字符串实现了ICloneable接口,所以您可以创建一个ICloneable项集合的副本。当集合仅包含字符串时,这可能会变得乏味,但是当集合包含多个实现ICloneable接口的类型时,它就非常有用了。
参考:what's the use of string.Clone()?
Clone()方法返回对正在克隆的字符串的引用。 它不是堆上字符串的独立副本。 它是同一字符串的另一个引用。
string
是一个引用类型,但它也是不可变的,所以它的行为有点不同于其他引用类型。然而,这并不改变Clone
方法并不是真正有用的事实。 - MarcinJuraszekstring.SubString(0)
不会返回一个副本,而是传递给它的同一引用,这是不直观的。 - leppie