我正在用C#写Silverlight中的一个软件。GC.Collect()会在什么情况下清除对象?
我知道GC.Collect会收集对象和控件,如果它们是未引用的,但我不确定非引用是什么意思。
我知道,在Silverlight中,我必须从布局中删除控件(称为“控件A”),取出所有事件处理程序,然后将该对象设置为空,以便它不引用该对象。例如:
1)如果“控件A”包含其他控件:“控件B”,“控件C”,并且它们可能在某处具有下标事件处理程序。
GC.Collect()还会收集“对照A”吗?那么“控制B”“控制C”如何?
我是否必须从“控件A”中实际删除包含“控件B”和“控件C”以及从“控件A”中删除“控件B”“控件C”的所有内容以使其收集?
2)说是否有一个“控制D”继续ComboBox,并且ComboBox有很多ComboxBoxItem。
我必须清除()出所有的ComboxBoxItem,以便这些ComboxBoxItem将被收集?
或者当我从“控件D”中删除组合框时,也将取出ComboxBoxItem?
我种在C删除的困惑++,因为在C++中我可以删除整个对象及其包含的一切......
有很多情况下你必须自己调用'GC.Collect();'。 – Nate 2010-09-14 16:23:24
这与Silverlight或C#无关,所以我更改了标签。 – 2010-09-14 16:33:05