该程序用于验证Excel行数据.如果if语句为false,我需要将消息附加到字符串,依此类推N个if语句.这不起作用,因为你可以看到第一个if语句是否失败,我不会继续查看其他if语句.后来,我需要处理100多列,所以我正在寻找一种方法来做到这一点.
有没有其他方法可以重写这个,所以它更具可读性和重复性?我知道我可以做一个巨大的if(.... && ....)来验证所有单元格和if if语句来附加消息,但我想知道是否还有另一种方法可以做到这一点.我想保留错误的顺序,但这并不重要.结果就像"facilityID is invalid, daysOfTheWeek is invalid"我还返回一个自定义Pair数据类型.
string facilityID, facilityDockDoorID, increment, hoursOfOperationId, updatedById, startTime, endTime, dockDoorServiceType, daysOfTheWeek;
facilityID = row[0];
facilityDockDoorID = row[1];
increment = row[2];
hoursOfOperationId = row[3];
updatedById = row[4];
startTime = row[5];
endTime = row[6];
dockDoorServiceType = row[7];
daysOfTheWeek = row[8];
string errorMessage = " is invalid";
if (IsInt(facilityID))
{
if (IsInt(facilityDockDoorID))
{
if (IsInt(increment))
{
if (IsInt(hoursOfOperationId))
{
if (IsInt(updatedById))
{
if (IsTime(startTime))
{
if (IsTime(endTime))
{
if (IsValidDockDoorServiceType(dockDoorServiceType))
{
if (IsValidDayOfTheWeek(daysOfTheWeek))
{
isDataValid.First = true;
}
else
{
isDataValid.Second += "daysOfTheWeek" + errorMessage + ",";
}
}
else
{
isDataValid.Second += "dockDoorServiceType" + errorMessage + ",";
}
}
else
{
isDataValid.Second += "endTime" + errorMessage + ",";
}
}
else
{
isDataValid.Second += "startTime" + errorMessage + ",";
}
}
else
{
isDataValid.Second += "updatedById" + errorMessage + ",";
}
}
else
{
isDataValid.Second += "hoursOfOperationId" + errorMessage + ",";
}
}
else
{
isDataValid.Second += "increment" + errorMessage + ",";
}
}
else
{
isDataValid.Second += "facilityDockDoorID" + errorMessage + ",";
}
}
else
{
isDataValid.Second = "facilityID" + errorMessage + ",";
}
return isDataValid;
}
Run Code Online (Sandbox Code Playgroud)
如果您反转if语句并返回每个语句,您可以像这样展开代码.
if (!IsInt(facilityID))
{
isDataValid.Second = "facilityID" + errorMessage + ",";
return isDataValid;
}
if (!IsInt(facilityDockDoorID))
{
isDataValid.Second += "facilityDockDoorID" + errorMessage + ",";
return isDataValid;
}
if (!IsInt(increment))
{
isDataValid.Second += "increment" + errorMessage + ",";
return isDataValid;
}
if (!IsInt(hoursOfOperationId))
{
isDataValid.Second += "hoursOfOperationId" + errorMessage + ",";
return isDataValid;
}
if (!IsInt(updatedById))
{
isDataValid.Second += "updatedById" + errorMessage + ",";
return isDataValid;
}
if (!IsTime(startTime))
{
isDataValid.Second += "startTime" + errorMessage + ",";
return isDataValid;
}
if (!IsTime(endTime))
{
isDataValid.Second += "endTime" + errorMessage + ",";
return isDataValid;
}
if (!IsValidDockDoorServiceType(dockDoorServiceType))
{
isDataValid.Second += "dockDoorServiceType" + errorMessage + ",";
return isDataValid;
}
if (IsValidDayOfTheWeek(daysOfTheWeek))
{
isDataValid.First = true;
}
else
{
isDataValid.Second += "daysOfTheWeek" + errorMessage + ",";
}
return isDataValid;
Run Code Online (Sandbox Code Playgroud)
然而,基于你连接Second它的事实,你更有可能想要这样的东西
if (!IsInt(facilityID))
isDataValid.Second = "facilityID" + errorMessage + ",";
if (!IsInt(facilityDockDoorID))
isDataValid.Second += "facilityDockDoorID" + errorMessage + ",";
if (!IsInt(increment))
isDataValid.Second += "increment" + errorMessage + ",";
if (!IsInt(hoursOfOperationId))
isDataValid.Second += "hoursOfOperationId" + errorMessage + ",";
if (!IsInt(updatedById))
isDataValid.Second += "updatedById" + errorMessage + ",";
if (!IsTime(startTime))
isDataValid.Second += "startTime" + errorMessage + ",";
if (!IsTime(endTime))
isDataValid.Second += "endTime" + errorMessage + ",";
if (!IsValidDockDoorServiceType(dockDoorServiceType))
isDataValid.Second += "dockDoorServiceType" + errorMessage + ",";
if (!IsValidDayOfTheWeek(daysOfTheWeek))
isDataValid.Second += "daysOfTheWeek" + errorMessage + ",";
isDataValid.First = isDataValid.Second.Length == 0;
return isDataValid;
Run Code Online (Sandbox Code Playgroud)
请注意,我正在比较长度Second以确定是否发生任何错误.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |