恐怕这是一个非常愚蠢的问题,但我一定遗漏了一些东西。
为什么要使用String.Copy(string)?
文档说方法
创建一个新的 String 实例,其值与指定的 String 相同。
由于字符串在 .NET 中是不可变的,所以我不确定使用这种方法有什么好处,因为我认为
string copy = String.Copy(otherString);
出于所有实际目的,似乎会产生与
string copy = otherString;
也就是说,除了正在进行的任何内部簿记以及复制不是ReferenceEquals
到 otherString 的事实之外,没有可观察到的差异 - String 是一个不可变类,其相等性基于值,而不是身份。(感谢@Andrew Hare 指出我最初的措辞不够精确,无法表明我意识到Copy
ing 和 not 之间存在差异,但担心缺乏有用的差异。)
当然,当传递一个null
参数时, Copy 会抛出一个ArgumentNullException
,并且“新实例”可能会消耗更多内存。后者似乎几乎没有好处,而且我不确定 null 检查是否足以保证整个 Copy 方法的好处。
谢谢。