IAlarmDevice alarmDevice = null;
if(alarmFlag ==
AlarmFlags.Acknowledge
{
alarmDevice = new
Acknowledged Armed Ice("Alarm1",
alarm.AcknowledgeCycle);
}
else{
alarmDevice = new
ResetAlarmDevice("Alarm1",
alarm.ResetCycle);
}
if(alarmDevice == null)
{
throw new ArgumentException("Could
not create an Alarm device");
}
在上面的代码中,alarmDevice将被分配到";否则";如果不是;如果";块如果即使在赋值之后alarmDevice的值为null(比如说找不到具有在构造函数中传递的名称的警报(;如果(alarmDevice==null(";我不明白为什么Sonarqube说它总是评估为false?如果在构造函数中没有传递警报名称字符串的alarmDevice,则它可能评估为true,在这种情况下,alarmDevice将保持为null。我在这里错过了什么?这是声纳的假阳性吗?
如果你去除了所有的噪音,这就是你的代码:
if(...)
{
alarmDevice = new ...
}
else
{
alarmDevice = new ...
}
在C#中,alarmDevice
不可能为null。构造函数不能在C#中返回null
,因此不可能不为变量分配实例。