gpt4 book ai didi

c# - 如何在 C# 中克隆祖先?

转载 作者:太空宇宙 更新时间:2023-11-03 22:10:30 26 4
gpt4 key购买 nike

我需要一个对象的半浅拷贝。在我最初的设计下,我使用 MemberwiseClone 来捕获所有简单的东西,然后我专门将类复制到需要复制的程度。 (其中一些本质上是静态的,其余大部分是容纳静态项目的容器。)我不喜欢冗长的副本列表,但没有办法解决这个问题。

但是,现在我发现自己需要创建一个后代对象——我现在是否必须返回并复制之前使用 MemberwiseClone 复制的所有那些字段?

还是我错过了一些更好的解决方法?

最佳答案

我发现最简单的克隆方法是使用序列化。这显然只适用于 [Serializable] 或实现 ISerializable 的类。

这是一个通用的通用扩展,您可以使用它来使任何可序列化类的对象都可克隆:

public static T Clone<T>(this T source)
{
if (source == default(T))
{
return default(T);
} else {
IFormatter formatter = new BinaryFormatter();
Stream ms = new MemoryStream();
using (ms)
{
formatter.Serialize(ms, source);
stream.Seek(0, SeekOrigin.Begin);
return (T) formatter.Deserialize(ms);
}
}
}

关于c# - 如何在 C# 中克隆祖先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6811909/

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