0

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

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

我该如何解决这个问题?

4

2 回答 2

0

你不能调用ToString对象null

尝试..

if (sRent == null)

或者,甚至更好...

if (string.IsNullOrEmpty((string)sRent))
于 2013-10-14T15:25:37.560 回答
0

您可以简单地将对象转换为string

string sTieToCPI = currentWorkSheet.Cells[rowNumber, 5].Value as string;

请注意,如果您想要一个默认值(即,如果为 null,则设置为空字符串),然后使用null-coalescing??

string sTieToCPI = currentWorkSheet.Cells[rowNumber, 5].Value as string ?? "";

但实际上你只需要 cast as string,然后检查将简化为:

if (sTieToCPI == "Y" && 
    (sRent != null || sWash != null || sReplacement != null) || sSales != null)
)
于 2013-10-14T15:44:49.807 回答