对于ViewModel中的属性,可以将属性定义为(c#): private MyClass _myclass;
public MyClass Myclass{
get { return _myclass;}
set {
if(value!=_myclass)
{
_myclass = value
RaisePropertyChanged("Myclass");
// do something else.....
}
}
}
然后我想在不再使用实例时释放内存。什么是正确的方法?
_myclass = null;
RaisePropertyChanged("Myclass");
或
Myclass = null;
或
_myclass = null;
Myclass = null;
答案 0 :(得分:1)
您无法确定何时释放对象的内存(由垃圾收集器决定),但当然只有在没有对它的引用时才会释放它。您应该使用Property set accessor将其设置为null。它会为您提出更改通知。
Myclass = null;
注意:这适用于纯托管类。如果您的类使用非托管资源,则需要实现IDisposable。
答案 1 :(得分:0)
你的第二个选择应该可以正常工作。
Myclass = null;
第一个选项是不必要的非DRY。第三个选项不会引发PorpertyChanged
。