在很多实例化中保持对象的引用是否很昂贵?

时间:2013-09-24 22:12:09

标签: c# reference parent

如果我有Foo类

public class Foo
{
    List<Doo> dooList = new List<Doo>();
}

和Doo课程

public class Doo
{
    Foo parent;
}

如果我使用对父Doo的引用来实例化类Foo的很多实例,那么这会让计算机慢下来吗?这是传递所需变量的廉价方法吗?

编辑: Foo类有大约20个变量/属性,Doo类大致相同。 课程Foo将有5到30个实例,每个Foo课程大约有10-20个Doo个课程

1 个答案:

答案 0 :(得分:2)

如果Foo是一个引用类型(即一个类,而不是一个struct),那么保持对它的引用的成本与在那里持有int的成本大致相同。 你唯一应该记住的是,因为有一个强烈的对象引用,GC不会清除它。

话虽如此,我发现持有循环引用通常是一种不好的做法。 (A类持有对B类的引用,B类持有对A类的引用)。 我建议尝试通过利用事件来消除对此的需要,或者至少使用接口(Foo实现接口IBoo,Doo保存对IBoo而不是Foo的引用)。把Doo需要调用的方法放在IBoo中,不要在Doo中公开整个Foo类。

希望这会有所帮助:)