- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的新 WPF 应用程序中,我重用了一个模型类。在该模型类中,所有属性都在其 setter 中触发 NotifyPropertyChanged。在我的应用程序中,我并没有真正为单个属性触发 INPC 的用例。我需要知道,如果我保留当前的体系结构,即每次更改个别属性时都会触发 INPC,这是否会对性能产生影响?在不需要时让个别属性触发 INPC 是否有意义?
最佳答案
一般来说,只要您运行了一段您不需要的代码,就可能会导致性能问题。
根据经验,当您为属性编写 setter 而不仅仅是设置支持字段和引发更改事件时,您应该在通知之前检查相等性,从而避免不必要的更新.
例如:
public int MyInteger
{
get { return this._myInteger; }
set {
if ( value != this._myInteger )
{
this._myInteger = value;
RaiseChangedEvent("MyInteger");
}
}
您还应该检查 RaiseChangedEvent
方法中的附加事件,这样如果没有监听器,您就不会抛出空引用异常,也不会进行不必要的调用:
private void RaiseChangedEvent(string propertyName)
{
var changedHandler = this.PropertyChanged ;
if ( changedHandler != null )
changedHandler(this, new PropertyChangedEventArgs( propertyName ) );
}
关于c# - 不必要的 NotifyPropertyChanged 调用是否会导致性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6033493/
jQuery attributeContainsPrefix [name^="value"] 对比 attributeStartsWith [name|="value"] 实际区别是什么? 最佳答案
在1.1部分在RFC 6749中,有四种角色:资源拥有者、资源服务器、客户端和授权服务器。 如果客户端和资源所有者是同一实体,OAuth 是否变得多余或不必要? 例如,我有一个封闭的 API 和一个面
我有一段代码,其中有一个带有保护子句的 raise 语句: def validate_index index # Change to SizeError raise ArgumentError
我看到了这篇文章( JPA Entity Lifecycle Events vs database trigger ),但它并没有像我在这里那样明确地询问: 当我插入 PK 值为 (null) 的行时
所以,我有一段代码看起来像 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){ // Do something }
我是一名优秀的程序员,十分优秀!