C# Clone()是什么';你的目的是什么?

C# Clone()是什么';你的目的是什么?,c#,.net,string,C#,.net,String,发件人: 返回值不是此实例的独立副本;它是 只是相同数据的另一个视图。使用Copy或CopyTo方法 创建一个与此实例具有相同值的单独字符串对象 因为Clone方法只返回现有的字符串实例, 没有什么理由直接称之为 据我所知,String是一种引用类型,这意味着只有在调用String时才能获得对String对象的引用 因此,为什么String.Clone()存在?它的目的是什么?也许只是为了实现ICloneable接口。请看 此外,ICloneable接口似乎已经过时: 这很有用,因为st

发件人:

返回值不是此实例的独立副本;它是 只是相同数据的另一个视图。使用Copy或CopyTo方法 创建一个与此实例具有相同值的单独字符串对象

因为Clone方法只返回现有的字符串实例, 没有什么理由直接称之为

据我所知,String是一种引用类型,这意味着只有在调用String时才能获得对String对象的引用


因此,为什么String.Clone()存在?它的目的是什么?

也许只是为了实现
ICloneable
接口。请看

此外,
ICloneable
接口似乎已经过时:

这很有用,因为string实现了ICloneable,所以您可以创建 可克隆项目集合的克隆副本。这太无聊了 当集合仅由字符串组成,但当 集合包含多个实现iClonable的类型。作为 对于复制单个字符串,它没有任何用处,因为它是通过设计返回的 对自身的引用

参考:

Clone()方法返回对正在克隆的字符串的引用。 它不是堆上字符串的独立副本。这是另一个参考 在同一条线上


阅读这篇文章:

你说得对,
string
是一种引用类型,但它也是不可变的,因此它的行为与任何其他引用类型略有不同。但是,它并没有改变这样一个事实,
Clone
方法也不是真正有用的。因为
string.SubString(0)
不返回副本,而是以非直观方式向其传递相同的引用。