将此无用的分配删除到本地变量C#


var  stopFyon = new StopFYON();
IEnumerable<CarOnline> carOnlineData = (IEnumerable<CarOnline>)vehrep.GetCarOnlineDetail(maintainStopFactoryOrderNo.VehicleDetail).Result;
if (carOnlineData.Any())
{
    stopFyon = vehtran.CreateStopFactoryOrderNo(carOnlineData, maintainStopFactoryOrderNo, lastUpdatedBy);
}
else
{
    stopFyon = vehtran.CreateStopFactoryOrderNo(null, maintainStopFactoryOrderNo, lastUpdatedBy);
}
return gen.GetResponse((Int16)ResultCode.Success, (Int16)MsgType.Ok, null, vehrep.StopFactoryOrderNo(stopFyon));

使用声纳代码分析时我会出现警告错误:

将此无用的分配删除到本地变量stopFyon

不要使用 var

StopFYON stopFyon;

警告的原因是您使用默认构造函数初始化变量(从理论上讲可能是一个非常昂贵的调用,至少它令人困惑)。但是,此任务在所有分支中都被覆盖(ifelse)。所以这没用。

如果您在if之前使用stopFyon,警告也会消失。

消息非常简单:

IEnumerable<CarOnline> carOnlineData = (IEnumerable<CarOnline>)vehrep.GetCarOnlineDetail(maintainStopFactoryOrderNo.VehicleDetail).Result;
StopFYON stopFyon;
if (carOnlineData.Any())
    stopFyon = vehtran.CreateStopFactoryOrderNo(carOnlineData, maintainStopFactoryOrderNo, lastUpdatedBy);
else
    stopFyon = vehtran.CreateStopFactoryOrderNo(null, maintainStopFactoryOrderNo, lastUpdatedBy);

第一个任务:

var stopFyon = new StopFYON();

是没有用的,因为在if statement之后执行了另一个作业。

它正在工作,当我更改代码StopFYON stopFyon = null而不是var stopFyon = new StopFYON();

只需使用StopFYON stopFyon;分配类型,无需像条件块分配实际值一样初始化。

最新更新