相关疑难解决方法(0)

在.NET中使用System.String.Copy有什么用?

我担心这是一个非常愚蠢的问题,但我必须遗漏一些东西.

为什么可能要使用String.Copy(string)

文档说明了这种方法

使用与指定String相同的值创建String的新实例.

由于字符串在.NET中是不可变的,我不确定使用此方法的好处是什么,正如我所想的那样

 string copy = String.Copy(otherString);
Run Code Online (Sandbox Code Playgroud)

出于所有实际目的,似乎会产生与之相同的结果

 string copy = otherString;
Run Code Online (Sandbox Code Playgroud)

也就是说,除了正在进行的任何内部簿记,以及副本不是ReferenceEqualsotherString 的事实,没有可观察到的差异 - 字符串是一个不可变的类,其相等性基于值,而不是身份.(感谢@Andrew Hare指出我的原始措辞不够精确,表明我意识到Copying和not 之间存在差异,但是担心缺乏有用的差异.)

当然,当传递null参数时,Copy会抛出一个ArgumentNullException,而"new instance"可能会占用更多内存.后者几乎不是一个好处,我不确定无效检查是一个足够大的奖金来保证整个复制方法.

谢谢.

.net string copy immutability

63
推荐指数
6
解决办法
1万
查看次数

字符串 - 克隆、复制和标准影响之间的区别

我在浏览遗留代码时刚刚遇到这样的块:

object exeName = _connectionSettings.ApplicationName.Clone();
RandomFunction(exeName);
Run Code Online (Sandbox Code Playgroud)

起初这对我来说似乎没什么用,但它让我感到好奇。两者之间是否存在根本区别:

var copiedString = initialString;
var copiedString = initialString.Clone();
var copiedString = string.Copy(initialString);
Run Code Online (Sandbox Code Playgroud)

我创建了一个基本的单元测试,似乎表明没有,因为无论使用什么方法,它的行为方式都是相同的(复制字符串的初始影响、初始字符串的更改、复制字符串值的断言)。我错过了什么吗?

.net c#

3
推荐指数
1
解决办法
2023
查看次数

标签 统计

.net ×2

c# ×1

copy ×1

immutability ×1

string ×1