以下是代码和有问题的一行。
当我将鼠标悬停在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 = ...
行。
以下是调试模式中发生的异常的屏幕截图:
答案 0 :(得分:2)
您的代码显示lock(_locker)
- 所以看起来您处于多线程环境中。你可以检查没有其他东西是你的变量吗?即其他一切也正确地调用lock(_locker)
?
答案 1 :(得分:1)
也许您的NULL位于res.EnergyServiceLevel
。
答案 2 :(得分:0)
src.EnergyServiceLevel.ServiceGrade
可能为null
将鼠标指针移动到每个引用将准确显示哪个为null。