问题标签 [icloneable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
49 浏览

vb.net - vb .net 燕子 ICloneable 实现

我知道这件事有很多问题。但在我的一生中,我无法理解答案或在我的示例中使用它们。我是 vb .net 的新手,我无法真正为我的特定示例实现一般示例。我所拥有的基本上是这样的:

[……]

我现在可以使用 ICloneable 来完成,但是在阅读了很多内容之后,我无法正确实现。先感谢您

0 投票
2 回答
43 浏览

c# - 在 C# 中使用 IClonable 接口进行深度复制的问题

我在制作对象的深层副本时遇到了麻烦。

我需要制作 Graph 类对象的深层副本。这是我的Graph班级和使用对象的Edge班级。Graph

到目前为止,我已经尝试过:

但它只创建了一个浅拷贝,并不能解决问题。当然,IClonable上面的所有示例都实现了接口。我尝试在网上查看其他示例,但没有结果。我正在使用foreach循环添加所有元素edgesvertices但该解决方案非常慢。

0 投票
1 回答
159 浏览

c# - 如何在不使用 MemberwiseClone 的情况下在抽象类上实现 Clone 方法?

我有一个这样定义的抽象基类:

派生类继承并使用基类的 Clone 方法,因此它们不必实现自己的 Clone 方法(加上一些额外的、不相关的原因)。

通常,此代码按预期工作。唯一的问题是有一个不需要的副作用。因为我使用 MemberwiseClone 来克隆实例,所以引用类型是浅拷贝的,不幸的是其中包括事件。因此,任何已订阅原始实例事件的对象也将订阅克隆实例上的事件。这就是问题。

有什么方法可以使用 BaseItem.Clone 方法克隆 BaseItem 派生类的实例,而无需克隆事件?

0 投票
1 回答
47 浏览

c# - 如何在不保留对原始字典的引用的情况下获取字典的 KeyValuePair 的副本?可克隆KVP?

所以我有一个程序,它开始使用精确数量的步骤构建从给定起点到同一点的可能路径字典。

我首先为开始和结束步骤的每个独特组合添加一个字典行,然后我有一个方法,它基本上可以找到所有可以填充其间剩余步骤的独特组合。

它看起来像这样:

我已经添加了一些带有***Issue***前缀的额外注释,这样您就可以看到我认为问题出在哪里以及我认为这里发生了什么。

现在距离我上次进行常规编码已经 3 或 4 年了,所以我有点生疏了(请不要过多地判断我的代码,哈哈),但我确实记得以前在处理字典时遇到过类似的问题,而且我似乎请记住,解决方案是拥有一个实现 IDictionary 和 ICloneable 的自定义字典,因此您可以调用.Clone()创建一个未引用的副本,然后可以对字典进行临时编辑并使用这些值,而不会将它们引用回您的源字典。

我想我会尝试用 KVP 做一些类似的事情,但似乎没有一个 KVP 接口可以实际用作自定义实现的基础。

我觉得我可能只是创建一个可克隆的字典,然后在从克隆版本中获取我需要的 KVP 副本之前克隆它,但是对于这项工作,我真的不需要整个字典都是可克隆的,只是KVP,所以看起来有点浪费

所以我想问题是,有没有更好的方法来打破 KVP 和 Dictionary 的值之间的引用?