2013-09-24 50 views
0

如果我有類Foo爲很多實例化提供對象引用是否昂貴?

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

和階級鬥

public class Doo 
{ 
    Foo parent; 
} 

如果我實例化了很多實例的類Doo與父Foo參考,是否減慢計算機很多?這是一種傳遞所需變量的廉價方法嗎?

編輯: Foo類有大約20個變量/屬性,和Doo類大致相同。 會有任何地方從類Foo 5〜30實例,並且每個Foo類具有約10-20 Doo

+0

您必須提供一些更多的細節 - 定義「很多」,「慢」和「看病貴」 ... –

+0

定義「很多instansiations的」,並且表現「很多「(就減速而言);這裏一切都是主觀的...它是否正在傷害你?帶這些數字的 –

+2

,這是沒有什麼可說的。該框架可以處理數千甚至數百萬個引用。所以除非你在奔騰2上運行它...你會沒事的。 – igelineau

回答

2

如果foo是引用類型(即,一類,而不是一個結構),然後保持引用它的代價大約與在那裏持有一個int相同。 您應該記住的唯一事情是,由於對對象有強烈的引用,GC不會清除它。

這就是說,我發現通常持有循環引用是一個不好的做法。 (A類持有對B類的引用,B類持有對A類的引用)。 我建議嘗試通過利用事件或者至少使用接口來消除這種需要(Foo實現接口IBoo,Doo持有對IBoo而不是Foo的引用)。將Doo需要調用的方法放在IBoo中,並且不要在Doo中公開整個Foo類。

希望這有助於:)