如果我有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
个课程
答案 0 :(得分:2)
如果Foo是一个引用类型(即一个类,而不是一个struct),那么保持对它的引用的成本与在那里持有int的成本大致相同。 你唯一应该记住的是,因为有一个强烈的对象引用,GC不会清除它。
话虽如此,我发现持有循环引用通常是一种不好的做法。 (A类持有对B类的引用,B类持有对A类的引用)。 我建议尝试通过利用事件来消除对此的需要,或者至少使用接口(Foo实现接口IBoo,Doo保存对IBoo而不是Foo的引用)。把Doo需要调用的方法放在IBoo中,不要在Doo中公开整个Foo类。
希望这会有所帮助:)