shuhelohelo’s blog

Xamarin.Forms多めです.

プロパティの変更通知でPropertyChangedEventArgsが大量に生成されるのが気になるときは

INortifyPropertyChangedを実装してプロパティの変更をView側に通知するには,変更された際にPropertyChangedEventArgsインスタンスを生成してPropertyChangedEventHandlerの実行時にパラメータとして渡す必要がある.

あるプロパティの更新が非常に頻繁だと,PropertyChangedEventArgsインスタンスが大量に作られることになる.

非常に頻繁でなければ気にすることはないと思うが,そのような場合はそのプロパティ用のPropertyChangedEventArgsをreadonlyな静的メンバーとして用意しておき,それを使い回すようにするという方法がある.

詳しくはこちら↓ blog.okazuki.jp

例えばセンサーデータなどはこのテクニックを使うとよいかもしれない.

        private readonly static PropertyChangedEventArgs _sensorValuePropertyChangedEventArgs = new PropertyChangedEventArgs(nameof(SensorValue));
        
        private double _sensorValue;
        public double SensorValue
        {
            get
            {
                return _sensorValue;
            }
            set
            {
                if (this._sensorValue == value)
                {
                    return;
                }
                this._sensorValue = value;
                this.PropertyChanged?.Invoke(this, _sensorValuePropertyChangedEventArgs);
            }
        }