存储嵌套对象

时间:2014-02-03 09:53:23

标签: c#-4.0

我有一个Type Parent对象,它有Parent类型的子对象,依此类推。 哪种数据类型最适合存储此类数据.. 添加对象是动态的,因为用户在UI中添加了对象。

1 个答案:

答案 0 :(得分:0)

由于名称Parent在语义上具有误导性,我会将其替换为Node,将您的问题解释为代码,

class Node : IEnumerable<Node> { }

现在,你说你想支持动态变化。如果会有一点变化,或者一般是批发变更,我会选择

class Node : List<Node> { }

但如果会有很多小变化,

class Node : LinkedList<Node> { }

可能更合适。


如果要支持树的许多小更改,我不会使用xml作为后备存储。虽然这似乎有意义,并且适用于大小合理的树,当树很大并且您在文档开头附近添加或删除数据时,您会得到一个明显的Shlemiel The Painter效果,因为内存被(de)分配并且尾巴移动了。除非您碰巧使用的XML文档实现避免了这种情况。

使用XML的优点是免费序列化,但XML并不是存储私有数据的最常用方法。存在更快和更小的替代方案。