我有一个叫做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/