我正在使用MVVM模式处理Silverlight应用程序.我的ViewModel当前包含一个表示模型对象集合的属性:
public ObservableCollectionIndexList { get; set; }
它还有几种方法可以使用从Web服务返回的数据填充该集合.
由于可以在应用程序运行时的过程中创建和销毁此类的实例,我是否应该实现IDisposable
并将属性的引用设置为null,或者此类的销毁是否足以删除对集合的所有引用?属性引用?是否有任何警告可能会留下参考?
谢谢.
引用在垃圾收集中存活的唯一方法是它是否为root.如果还有一些仍在使用的类包含对ObservableCollection的引用,则无论是否将其设置为null,都不会销毁ObservableCollection.例如,假设有一个"内存"对象是您的集合.您的财产中有一个对它的引用.其他一些代码执行"ObservableCollection <> myOtherReference = YourObject.IndexList;"这一行.它们现在也引用了实际的内存对象.使您的属性引用为null将只消除您的属性的引用; 'myOtherReference'引用不受影响,因为它现在直接指向内存,而不是您的属性.