NullReferenceException in string.IsNullOrWhiteSpace() and string.IsNullOrEmpty()

会有一股神秘感。 提交于 2019-12-25 16:31:29

问题


I'm checking the cell values of cells of a column that might or not be empty/null so I needed something to avoid a NullReferenceException.

How do I do that since even with the IsNullOrWhiteSpace() and IsNullOrEmpty() I get that exception somehow.

Here's part of the code I'm using:

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();
    }

I've tried those methods I've tried putting it ==null, I've tried !=null. What else is there or what am I doing wrong exactly and how do I do it right?


回答1:


the are a lot of places you code could throw that exception ..

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

I belive you don't need the ToString() just type:

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

in your ifstatement do this:

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



回答2:


Many people don't understand how to diagnose a NullReferenceException. Consider the following:

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

Many parts of this could be null. It's the same thing as

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

If a is null, then a[0] will throw a NullReferenceException. If b is null, then b.Cells will throw a NullReferenceException, etc.

You simply have to figure out which of these is null in your particular situation. The simplest way is to use the debugger. Set a breakpoint before the line that throws the exception. Then hover the mouse over various parts of the expression to see which are null, or use the "Watch" window to enter parts of the expression.

When you find a null, you can stop looking for your NullReferenceException.




回答3:


You can add an extra line of code to check and handle the null case.

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

If value is null, then ToString() will not be evaluated and the program cannot throw NullReferenceException.




回答4:


I think in dataGridView1.Rows[0].Cells[8].Value.ToString() you will get a NullReferenceException if the Value is null. So you should check for dataGridView1.Rows[0].Cells[8].Value != null and then you can convert it to a string



来源:https://stackoverflow.com/questions/19709656/nullreferenceexception-in-string-isnullorwhitespace-and-string-isnullorempty

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!