一个属性可以更改而不会调用它的setter吗?

时间:2017-12-01 05:36:17

标签: c#

我在Model类中有一个带有getter和setter的简单属性

private bool _isThresholdBreached;
public bool IsThresholdBreached
{
  get
  {
      return _isThresholdBreached;
  }
  set
  {
      if(_isThresholdBreached == value)
         return;
      _isThresholdBreached = value;
      OnThresholdBreached?.Invoke(this, new EventArgs()); 
  }    
}

奇怪的是,在没有setter getter命中的情况下,属性的值会发生变化。我在getter和setter中都设置了一个断点,我看到当连续调用getter时,值已经改变但是setter断点从未命中。这怎么可能呢?请指点。

编辑:我已经验证并且可以确认除了在setter中之外的其他任何地方都没有修改后备字段

1 个答案:

答案 0 :(得分:5)

您的财产有一个支持字段。 直接调用该字段的任何代码都会在不调用setter的情况下更新该值(这可以是直接的或通过反射)。

我会从Find usages的{​​{1}}开始,然后在解决方案中进行全文搜索。