如何解决字符串数组对象上的 NullReference 异常?

How to resolve NullReference Exception on String Array Objects?

我在 class 中有一个 String array 对象,即我想在运行时初始化的 String[] particulars。相同的代码段适用于另一个 class 对象,但它不是数组。这里 nd 是 class 的对象。

int i=0; foreach (DataRow row1 in dt1.Rows) { nd.particulars[i] = row1["floor"].ToString(); nd.quantity[i] = (double)row1["area"]; nd.rate[i] = (double)row1["rate"]; nd.amount[i] = (double)row1["amount"]; i++; }

下面的代码抛出了一些NullReferenceException。错误说:

对象引用未设置为对象的实例。

class定义如下:

class NoteDetails
 {
    public string[] particulars;
    public double[] quantity;
    public double[] rate;
    public double[] amount;

    public string[] mparticulars;
    public double[] mquantity;
    public double[] mrate;
    public double[] mamount;

    public NoteDetails()
    {
        particulars = null;
        quantity = null;
        amount = null;
        rate = null;

        mparticulars = null;
        mquantity = null;
        mamount = null;
        mrate = null;
    }
 }

请告诉我我做错了什么?

您必须初始化您的字符串数组(以及您的其他数组)。您可以在 class.

的构造函数上执行此操作
nd.particulars = new string[5]; //or whatever size

*NullReferenceException** 似乎您的对象之一为空( nd 或 row1 或 dt1 )。 如果某些东西是 null 不要忘记实例化它.

你需要调试你的代码来检查你在哪里有这个问题。

此外,你应该测试你的对象是否为空以避免这样的错误:

if( dt1 != null ){
 //do what you want
}

或者像这样 (>= C#6)

dt1?.Rows