2012-08-17 76 views
1

我有一个叫做树节点如果有更多方法,C#类占用更多空间吗?

public class TreeNode 
{ 
    public TreeNode Parent { get; set; } 
    public Guid Id { get; set; } 
    public List<TreeNode> ChildrenNodes { get; set; } 

    public TreeNode FindChildrenNodeById(Guid node_Id); 
    void RecursivelyFindNode(); 
} 

我要缓存树节点的对象列表到内存类。

如果我把FindChildrenNode方法放在类里面,缓存时会占用更多空间进入内存吗?

我应该在TreeNodeUtilities类中移动搜索功能吗?

回答

7

只有字段消耗类的每个实例的内存。方法不。属性不消耗每个实例的内存,但它们的后台字段将会。

方法会为代码和元数据消耗一点内存,但它很小,不会随着您创建的对象数量而扩展,所以在大多数情况下它可以被忽略。

这意味着您不会通过将搜索功能移到单独的类中获得任何收益。

如果你渴望内存,改变子列表的存储方式(例如使用第一个孩子,下一个兄弟姐妹系统),甚至把它变成一个嵌入在数组中的结构会让你有点。但是我也不会这样做,除非这显然是一个主要的性能问题。

1

你不仅要保持FindChildrenNodeById在课堂上,你必须。我假设FindChildrenNodeById将搜索TreeNode和所有子节点。您需要搜索的起点,因此函数的输入将是node_Id和起始节点。在你的情况下,起点将是this

没有必要为公用事业另一类。到目前为止,你正在以正确的方式进行。

相关问题