INotifyPropertyChanging接口如何帮助限制内存消耗

Ada*_*sha 7 .net c# linq-to-sql windows-phone-8

我开始学习LINQ-to-SQLWindows Phone 8,并在MSDN上看到了这篇文章.

它们显示了一个基类,DataContext它实现了INotifyPropertyChangingINotifyPropertyChanged.理由INotifyPropertyChanging是:

◦INotifyPropertyChanged接口用于更改跟踪.

◦INotifyPropertyChanging接口有助于限制与更改跟踪相关的内存消耗.

本文未能提供任何具体的参考资料来证明对INotifyPropertyChanging接口的内存消耗主张.关于INotifyPropertyChanging本身的文章 只是说:

通知客户端属性值正在更改.

有人可以向我解释这个界面如何限制应用程序的内存占用,只需通知一个属性值即将发生变化(甚至不限制该变化发生)?

Ada*_*sha 2

好吧,我终于找到了另一篇MSDN 文章,它实际上解释了如何INotifyPropertyChanging限制内存占用。引用这篇文章(强调我的):

通知是通过属性设置器中的 PropertyChanging 事件提供的。当 LINQ to SQL收到对某个对象的第一次更改的通知时,它会创建该对象的副本,并将该对象视为生成 Update 语句的候选对象。

对于未实现 INotifyPropertyChanging 的对象,LINQ to SQL 会维护对象首次具体化时所具有的值的副本

因此,如果您不实现INotifyPropertyChanging并且从不更新使用 Linq-SQL 获取的任何对象,它仍然会为其创建的每个对象创建该对象的副本。通过实现该接口,您可以避免额外的内存使用,并让它仅在您实际更改对象状态时才创建副本。