【发布时间】:2018-08-28 17:20:16
【问题描述】:
我研究了一天的深拷贝,但我还是不太明白。
这就是我想要的。
静态类 MyList
List<MenuData> Menu1 = MenuList.Menus.ToList();
List<MenuData> Menu2 = MenuList.Menus.ToList();
我在删除方法上使用 Menu2。 但是,Menu1 也被删除了。 我发现Menu1和Menu2因为Swallow Copy一起被删除了。
他们还提到了其他人的样本,但失败了。
static class MenuList
{
public class MenuData
{
public string ID { get; set; }
public string Text { get; set; }
public string Image { get; set; }
public Boolean Expanded { get; set; }
}
public static List<MenuData> Menus = new List<MenuData>()
{
new MenuData {
ID = "1",
Text = "Service",
Image = "file_path.png",
Expanded = false
},
};
public static T Clone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T)formatter.Deserialize(ms);
}
}
public static List<MenuData> CopyMenus = MenuList.Clone(MenuList.Menus);
}
ErrMessage : The format 'Models.MenuData' is not marked serializable.
要求减少进一步的时间浪费。
【问题讨论】:
-
如何克隆
static类有意义?克隆是创建对象的副本。static类不能被实例化,所以你一开始就不能创建一个对象,那么你怎么能复制一个呢? -
为什么要在
static类中声明一个类? -
创作者的意图未知。我需要静态类中的更多数据。但是,数据量很大。所以我想高效地创建一个克隆。