0

我正在检查可能为空/空的列的单元格的单元格值,所以我需要一些东西来避免NullReferenceException.

我该怎么做,因为即使有IsNullOrWhiteSpace()并且IsNullOrEmpty()我以某种方式得到了那个异常。

这是我正在使用的部分代码:

s = "Total = " + dataGridView1.Rows[0].Cells.Count +
    "0 = " + dataGridView1.Rows[0].Cells[0].Value.ToString() +
    "/n  1 = " + dataGridView1.Rows[0].Cells[1].Value.ToString() +
    "/n  2= " + dataGridView1.Rows[0].Cells[2].Value.ToString() +
    "/n  3 = " + dataGridView1.Rows[0].Cells[3].Value.ToString() +
    "/n  4= " + dataGridView1.Rows[0].Cells[4].Value.ToString() +
    "/n  5 = " + dataGridView1.Rows[0].Cells[5].Value.ToString() +
    "/n  6= " + dataGridView1.Rows[0].Cells[6].Value.ToString() +
    "/n  7 = " + dataGridView1.Rows[0].Cells[7].Value.ToString();

    if (string.IsNullOrEmpty(dataGridView1.Rows[0].Cells[8].Value.ToString()))
    {

    }
    else
    {
        s += "/n  8 = " + dataGridView1.Rows[0].Cells[8].Value.ToString();
    }

我试过那些我试过放的方法==null,我试过了!=null。还有什么或者我到底做错了什么,我该如何做对?

4

4 回答 4

5

您编码的很多地方都可能引发该异常..

dataGridView1.Rows[0]  //here
             .Cells[0] //here
             .Value    //and here
             .ToString() 

我相信你不需要ToString()just 类型:

"... "+ dataGridView1.Rows[0].Cells[0].Value

在你的if声明中这样做:

if (string.IsNullOrEmpty(dataGridView1.Rows[0].Cells[8].Value as string))
于 2013-10-31T14:54:31.453 回答
2

很多人不明白如何诊断NullReferenceException。考虑以下:

dataGridView1.Rows[0].Cells[3].Value.ToString()

这其中的许多部分可能是null. 这是一样的事情

var a = dataGridView1.Rows;
var b = a[0];
var c = b.Cells;
var d = c[3];
var e = d.Value;
var f = e.ToString();

如果anull,那么a[0]将抛出一个NullReferenceException。如果bnull,那么b.Cells将抛出一个NullReferenceException,等等。

您只需要弄清楚哪些是null您的特定情况。最简单的方法是使用调试器。在引发异常的行之前设置断点。然后将鼠标悬停在表达式的各个部分上以查看哪些为空,或使用“监视”窗口输入表达式的各个部分。

当您找到一个null时,您可以停止寻找您的NullReferenceException.

于 2013-10-31T15:02:00.243 回答
0

您可以添加额外的代码行来检查和处理 null 情况。

var value = dataGridView1.Rows[0].Cells[0].Value;
string s = (value == null ? string.Empty : value.ToString());

如果 value 为 null,则不会计算 ToString(),并且程序不能抛出 NullReferenceException。

于 2013-10-31T14:51:52.767 回答
0

我认为dataGridView1.Rows[0].Cells[8].Value.ToString()如果 Value 为 null,您将获得 NullReferenceException。所以你应该检查dataGridView1.Rows[0].Cells[8].Value != null然后你可以将它转换为一个字符串

于 2013-10-31T14:53:05.993 回答