gpt4 book ai didi

c# - 如何将 IList 复制到相同类型的 IList?

转载 作者:行者123 更新时间:2023-11-30 19:55:34 26 4
gpt4 key购买 nike

在 C# 中,如果我有一个 IList,但我不知道 IList 中对象的类型,我该如何创建一个 的副本>IList?

情况是这样的:

我有一个 CollectionEditor,它可以修改 IList 中的项目。如果按下取消按钮,我需要在项目更改之前恢复 IList

最佳答案

这里有两个不同的问题。将一个列表复制到另一个列表相对容易 - 如果您不需要第二个列表是完全相同类型的具体列表,您可以使用 ToList(),否则您可以只是 Add 循环。但是,这不会解决您的问题,除非此处的T 是不可变的。对于 stringint 等来说没问题,但是将引用复制到复杂类型将不允许您将列表恢复为单个 items 可以在 UI 中编辑。要解决那个 问题,您需要一个“深层复制”(或者有一些其他策略,但这是最简单的)。正如已经指出的那样:进行深拷贝的一种方法是:序列化。通过对 XML、json 或其他序列化格式的数据进行快照,可以通过“反序列化”实现“恢复”。

当然,如果您的 T 内置了深度克隆方法,您也许可以使用它来代替序列化。 ICloneable 是深还是浅是不明确的,所以我认为坚持 where T : ICloneable 是不够的。

关于c# - 如何将 IList 复制到相同类型的 IList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36931276/

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