Mvc:生成错误消息的空值 对象引用未设置为对象的实例

本文关键字:设置 对象 实例 对象引用 空值 错误 消息 Mvc | 更新日期: 2023-09-27 18:35:21

我正在从 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);
             }

我的尝试没有解决它,但仍然收到错误消息"对象引用未设置为对象的实例"

我该如何解决这个问题?

Mvc:生成错误消息的空值 对象引用未设置为对象的实例

不能对对象调用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)
)