これは意味がありますか、または等価チェックは冗長ですか?XF BindableProperyで同等かどうかをチェックするのは意味がありますか?
public int SelectedIndex
{
get { return (int)GetValue(SelectedIndexProperty); }
set
{
if (value != SelectedIndex)
SetValue(SelectedIndexProperty, value);
}
}
私はsource codeにビットを見て、それが実際の等価性のチェックに到達するまでオブジェクトは長い道のりを行っているように見える、とさえ、私はそれかどうかを把握するために十分深く掘るませんでしたそれでもなお、GetValue
のオーバヘッドははるかに簡単ですが、ここでの参照平等チェックは推奨/冗長ですか?
私はすべてのプロパティでそれをやるつもりはありませんが、オーバーヘッドの多い繰り返しのものがあります。
あなたは 'SetValue'部分にいくつかのホップを保存しますが、' GetValue'でもいくつかの部分を失うので、最終的には違いがないようです。両方のアプローチをベンチマークして、正確なパフォーマンスの違いを調べることができます。 –
私は、 'SetValue'を使うことが等しい値を再割り当てする前にチェックすることが保証されているかどうかは分かりませんでした。 – Shimmy