我正在从 excel 文件中读取列并分配给变量
object sTieToCPI = currentWorkSheet.Cells[rowNumber, 5].Value;
object sRent = currentWorkSheet.Cells[rowNumber, 7].Value;
object sWash = currentWorkSheet.Cells[rowNumber, 8].Value;
object sReplacement = currentWorkSheet.Cells[rowNumber, 9].Value;
object sSales = currentWorkSheet.Cells[rowNumber, 10].Value;
在处理数据之前,我在这里进行一些验证
if ((sTieToCPI.ToString() == "Y") && ((sRent.ToString() != "") || (sWash.ToString() != "") || (sReplacement.ToString() != "") || (sSales.ToString() != "")))
{
validationErr.AppendLine("Invalid Rent/Wash/Sales/Repl values for this Tie-to-CPI: " + sTieToCPI + " " + "Row:" + rowNumber);
}
一旦我到达上面的行,我得到的只是"对象引用未设置为对象的实例" 我认为这是因为sRent,sWash,sReplacement和sSales为空。
这是我在下面解决空问题的尝试
if (sRent.ToString()) == null)
{
sRent = "";
}
if (sWash.ToString() == null)
{
sWash = "";
}
if ((sTieToCPI.ToString() == "Y") && ((sRent.ToString() != "") || (sWash.ToString() != "") || (sReplacement.ToString() != "") || (sSales.ToString() != "")))
{
validationErr.AppendLine("Invalid Rent/Wash/Sales/Repl values for this Tie-to-CPI: " + sTieToCPI + " " + "Row:" + rowNumber);
}
我的尝试没有解决它,但仍然收到错误消息"对象引用未设置为对象的实例"
我该如何解决这个问题?
不能对对象调用null
ToString
。
尝试。。
if (sRent == null)
或者,甚至更好...
if (string.IsNullOrEmpty((string)sRent))
您可以简单地将对象转换为string
:
string sTieToCPI = currentWorkSheet.Cells[rowNumber, 5].Value as string;
请注意,如果您想要默认值(即,如果为 null,则设置为空字符串),请使用 null 合并??
:
string sTieToCPI = currentWorkSheet.Cells[rowNumber, 5].Value as string ?? "";
但实际上你只需要演员as string
,然后检查将简化为:
if (sTieToCPI == "Y" &&
(sRent != null || sWash != null || sReplacement != null) || sSales != null)
)