我有一个叫做TreeNode的类

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();
}


我想将TreeNode对象的列表缓存到内存中。

如果我将FindChildrenNode方法保留在类内,则在缓存时会在内存中占用更多空间吗?

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

最佳答案

每个字段仅消耗该类实例的内存。方法不行。属性也不消耗每个实例的内存,但是它们的后备字段会消耗。

方法会占用一些代码和元数据的内存,但是它很小,并且不随您创建的对象数量扩展,因此在大多数情况下可以忽略。

这意味着将搜索功能移至单独的类不会获得任何好处。

如果您迫切需要内存,那么更改子级列表的存储方式(例如,使用第一个子级,下一个同级系统),甚至将其转换为嵌入在数组中的结构都可以为您带来一些好处。但是我也不会这样做,除非这显然是一个主要的性能问题。

关于c# - 如果有更多方法,C#类是否会占用更多空间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12004800/

10-13 06:00