下面是代码和有问题的行。
当我将鼠标悬停在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)
吗?