INotifyPropertyChanging

INotifyPropertyChanging

我开始学习Windows Phone 8的LINQ-to-SQL,并在MSDN上碰到this文章。

它们显示了DataContext的基类,该基类实现了INotifyPropertyChangingINotifyPropertyChangedINotifyPropertyChanging的原因是:



本文没有提供任何特定的引用来证明对INotifyPropertyChanging接口(interface)的内存消耗的主张。关于INotifyPropertyChanging本身的文章只是说:



有人可以告诉我这个接口(interface)如何限制应用程序的内存占用,仅通过通知属性值将要更改(甚至不限制更改不会发生)如何向我解释?

最佳答案

我只能推断,但是我认为这就是作者的想法:

在没有INotifyPropertyChanging的世界中,如果使用者需要某个属性的旧值,则它必须抢先缓存它(因为一旦PropertyChanged事件引发,那就太迟了,并且该值已经更改)。另外,生产者可以在不同的属性中保留旧值的副本。无论哪种方式,数据始终保持重复。

使用INotifyPropertyChanging,使用者不需要预先缓存任何内容。引发PropertyChanging事件时,知道它即将更改,它可以获取旧值。然后引发NotifyPropertyChanged事件,使用者可以获取新值,对两者进行任何处理,然后将其删除。数据仍然是重复的,但是仅在特定时间点和有限的持续时间内。

10-08 06:18