gpt4 book ai didi

c# - 如何复制一个对象,然后将其与原始对象进行比较,看是否发生了变化?

转载 作者:行者123 更新时间:2023-11-30 14:00:12 25 4
gpt4 key购买 nike

我需要执行一些功能,如果用户要关闭窗口(或执行其他操作)而不保存他们的更改,他们将收到消息框的通知。

为了能够做到这一点,我需要能够知道自窗口打开以来是否对相关对象进行了更改。

我正在考虑一种方法是在窗口加载时创建对象的副本并将其保持为 _original 然后在窗口关闭之前我可以将它与可能已更改,也可能未更改。

将对象复制到 _original 中的最佳方法是什么,而不是让它们都简单地引用内存中的同一位置?

此外,比较两个对象的最佳方法是什么,以查看该对象是否与 _original 不同?

最佳答案

您可以使用 BinaryFormatter 序列化对象然后将其反序列化:

public static string Serialize<T>(T instance)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, instance);
return Convert.ToBase64String(stream.ToArray());
}
}

public static T Deserialize<T>(string serialized)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream(Convert.FromBase64String(serialized)))
{
return (T)formatter.Deserialize(stream);
}
}

关于c# - 如何复制一个对象,然后将其与原始对象进行比较,看是否发生了变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11652477/

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