如何解决字符串数组对象上的 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
我在 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