int解析DataGridView行值时的Null引用异常

erw*_*oza -6 c# datagridview

下面代码的目的是总结datagridview在订单系统中无限添加的所有索引3,并将其显示在名为的标签中Price.

private void Add_Click(object sender, EventArgs e)
{
    dgvSelected.Rows.Add(dgvItem.SelectedCells[0].Value.ToString(),
                         dgvItem.SelectedCells[1].Value.ToString(), 
                         dgvItem.SelectedCells[2].Value.ToString(), 
                         dgvItem.SelectedCells[3].Value.ToString());

    for (int i = 0; i < dgvSelected.Rows.Count; i++)
    {
        price = price + int.Parse(dgvSelected.Rows[i].Cells[3].Value.ToString());
        Price.Text = price.ToString();
    }       
}
Run Code Online (Sandbox Code Playgroud)

问题是它一直在说:

"你调用的对象是空的."

...作为以下行的错误:

price = price + int.Parse(dgvSelected.Rows[i].Cells[3].Value.ToString());
Run Code Online (Sandbox Code Playgroud)

表中应该没有null,但错误仍然是坚持存在null.表中有多行,但它可以读取的唯一行是第1行.当涉及到具有值的第二行时,它会说出有关的错误.

Jam*_*iec 6

当然编程语言是错误的.它向您报告您要使用实际上为null的对象引用.

在以下部分dgvSelected.Rows[i].Cells[3].Value.ToString()之一是null

  • dgvSelected
  • dgvSelected.Rows
  • dgvSelected.Rows[i]
  • dgvSelected.Rows[i].Cells
  • dgvSelected.Rows[i].Cells[3]
  • dgvSelected.Rows[i].Cells[3].Value

如您所见,您应该进行大量检查以确保这些objets都不为null

编辑:Strikeout中的一些,正如在注释中正确指出的那样,如果循环不为null,则不会输入循环.

  • 您几乎可以排除前4个,否则它们不会进入循环. (2认同)