C# 获取“对象引用未设置为对象的实例”。即使排除null
我使用datagridview编写了以下代码,您只能选择一整行: Variable.addModArray[i]是字符串[]C# 获取“对象引用未设置为对象的实例”。即使排除null,c#,C#,我使用datagridview编写了以下代码,您只能选择一整行: Variable.addModArray[i]是字符串[] class Variables { public static string[] addModArray; } int i = 0; while (i < dgv.SelectedRows.Count) { if (dgv.SelectedRows[0].Cells[i].Value != null) Variables.addMo
class Variables
{
public static string[] addModArray;
}
int i = 0;
while (i < dgv.SelectedRows.Count)
{
if (dgv.SelectedRows[0].Cells[i].Value != null)
Variables.addModArray[i] = dgv.SelectedRows[0].Cells[i].Value.ToString(); //gets error
i++;
}
当我运行代码时,我得到的对象引用没有设置为对象的实例。错误,但我已经告诉计算机,如果值不为空,请执行代码!我做错什么了吗
告诉我是否需要对此问题添加任何内容。首先,对于任何给定的a.b.c组合,检查a.b.c!=null并不意味着a.b不能为null,或者a不能为null 正如其他评论员所指出的,它也不能阻止其他变量为空 其次,不清楚为什么要为每个选定行增加i,但不使用除第一行以外的任何内容 你说你只能选择一行,那么为什么还要麻烦循环呢 我希望:
int i = 0;
while (i < dgv.SelectedRows.Count)
{
if (dgv.SelectedRows[0].Cells[i].Value != null)
Variables.addModArray[i] = dgv.SelectedRows[0].Cells[i].Value.ToString(); //gets error
i++;
}
将是:
int i = 0;
while (i < dgv.SelectedRows.Count)
{
if (dgv.SelectedRows[i].Cells[0].Value != null)
Variables.addModArray[i] = dgv.SelectedRows[i].Cells[0].Value.ToString(); //gets error
i++;
}
或者:
int i = 0;
while (i < dgv.SelectedCells.Count)
{
if (dgv.SelectedRows[0].Cells[i].Value != null)
Variables.addModArray[i] = dgv.SelectedRows[0].Cells[i].Value.ToString(); //gets error
i++;
}
试试这个
//please try this
int i = 0;
if(dgv.SelectedRows.Count > 0)
{
while (i < dgv.Columns.Count)
{
Variables.addModArray[i] = dgv.SelectedRows[0].Cells[i].FormattedValue;
i++;
}
}
也可能是变量或addModArray为空。哪一行给出了错误?dgv.SelectedRows是否为空?此外,您正在迭代SelectedRows的计数,但使用单元格上的索引,这一行会显示此错误?如果dvg.SelectedRows[0]。单元格为空会怎么样?如果dvg.SelectedRows[0].Cells[i]为空会怎样?为什么总是使用dgv.SelectedRows[0]而不是dgv.SelectedRows[i]?@ta.speot.is或Variables为null。或者addModArray是null@Jehof你能回答我的问题吗?因为你解决了我的问题,或者我