gpt4 book ai didi

c# - 实现 ICloneable 接口(interface) C#(深度克隆)

转载 作者:行者123 更新时间:2023-12-02 15:50:48 25 4
gpt4 key购买 nike

我正在查看为其中一个类实现 ICloneable 接口(interface)的代码。

类(class)如下:

public class TempClass
{
String[] names;
String[] values;
}

创建了一个实现TempClass的分部类

public partial class TempClass:ICloneable
{
public Object Clone()
{
TempClass cloneClass = new TempClass();
String[] cloneNames = new String[this.names.Length - 1];
String[] cloneValues = new String[this.values.Length -1];

Array.Copy(this.names,cloneNames,this.names.Length);
Array.Copy(this.values,cloneValues,this.values.Length);

cloneClass.names = cloneNames;
cloneValues.values = cloneValues;

return cloneClass;
}
}

我想知道这是否是进行对象深层复制的有效方法?这里引起注意的是中间结构 cloneNamescloneValues,它们用于复制原始对象的值,并具有成员变量 Names 和值指向它,然后返回在克隆方法中创建的对象引用。

对此片段的任何反馈将不胜感激

谢谢

最佳答案

好吧,有一个问题 - 您没有创建正确大小的新字符串数组。应该是:

String[] cloneNames = new String[this.names.Length];
String[] cloneValues = new String[this.values.Length];

或者作为更简单的解决方案:

String[] cloneNames = (String[]) this.names.Clone();
String[] cloneValues = (String[]) this.values.Clone();

除此之外,应该没问题。您能更详细地解释一下您的担忧吗?

关于c# - 实现 ICloneable 接口(interface) C#(深度克隆),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1702062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com