下面是代码和有问题的行。

当我将鼠标悬停在src.EnergyServiceLevel上时,表明它为空。
如果我在上一行中检查null怎么办?

我的猜测是,可能有线程导致了问题,所以我添加了一个锁,
但这没有帮助。

public static ServiceLevelsGroup SafeClone(this ServiceLevelsGroup src) {
  ServiceLevelsGroup res = null;
  lock (_locker) {
    if (src != null) {
      res = new ServiceLevelsGroup();
      if (src.EnergyServiceLevel != null) {
        res.EnergyServiceLevel = new ServiceLevelInfo { ServiceGrade = src.EnergyServiceLevel.ServiceGrade };

        if (src.EnergyServiceLevel.Reason != null)
          res.EnergyServiceLevel.Reason = src.EnergyServiceLevel.Reason;
      }
    }
  }

  return res;
}


上面的代码中的res.EnergyServiceLevel = ...行处发生异常。

这是在调试模式下发生的异常的屏幕截图:

最佳答案

您的代码显示lock(_locker)-看起来您处于多线程环境中。您可以检查是否没有其他东西使您的变量为NULL?即其他所有内容也都正确调用了lock(_locker)吗?

07-24 13:24