从构造函数访问更新的数组
Access updated array from constructor
我有一个参数化构造函数和一个默认构造函数。它们都创建了一个长度为 x 的新对象数组,但是,当我尝试在 Add 方法中访问该数组时,它 returns 的值 "null"。我无法在字段中初始化数组,因为我不知道用户想要它的大小,但我不知道如何在代码后面访问 'updated' 数组。我在代码行得到一个 NullReferenceException():if (count > data.Length) 因为数据的值为 null.
class CustomList
{
private int count;
private String[] data;
public int Count
{
get { return count; }
}
public CustomList(int arrayNum)
{
String[] data = new String[arrayNum];
}
public CustomList(): this(4)
{
}
public void Add (String item)
{
if (count > data.Length)
{
String[] temp = new String[count * 2];
for (int i = 0; i < data.Length; i++)
{
temp[i] = data[i];
}
data = temp;
}
data[count] = item;
count++;
}
改变这个:
public CustomList(int arrayNum)
{
String[] data = new String[arrayNum];
}
为此:
public CustomList(int arrayNum)
{
data = new String[arrayNum];
}
您不小心在构造函数中创建了一个局部变量,该变量被分配给而不是您要分配给的字段。
更改您的代码。
构造函数中的数据对象是局部变量。
而且您没有初始化实例数据对象。
class CustomList
{
private int count;
private String[] data;
public int Count
{
get { return count; }
}
public CustomList(int arrayNum)
{
data = new String[arrayNum];
}
public CustomList(): this(4)
{
}
public void Add (String item)
{
if (count > data.Length)
{
String[] temp = new String[count * 2];
for (int i = 0; i < data.Length; i++)
{
temp[i] = data[i];
}
data = temp;
}
data[count] = item;
count++;
}
我有一个参数化构造函数和一个默认构造函数。它们都创建了一个长度为 x 的新对象数组,但是,当我尝试在 Add 方法中访问该数组时,它 returns 的值 "null"。我无法在字段中初始化数组,因为我不知道用户想要它的大小,但我不知道如何在代码后面访问 'updated' 数组。我在代码行得到一个 NullReferenceException():if (count > data.Length) 因为数据的值为 null.
class CustomList
{
private int count;
private String[] data;
public int Count
{
get { return count; }
}
public CustomList(int arrayNum)
{
String[] data = new String[arrayNum];
}
public CustomList(): this(4)
{
}
public void Add (String item)
{
if (count > data.Length)
{
String[] temp = new String[count * 2];
for (int i = 0; i < data.Length; i++)
{
temp[i] = data[i];
}
data = temp;
}
data[count] = item;
count++;
}
改变这个:
public CustomList(int arrayNum)
{
String[] data = new String[arrayNum];
}
为此:
public CustomList(int arrayNum)
{
data = new String[arrayNum];
}
您不小心在构造函数中创建了一个局部变量,该变量被分配给而不是您要分配给的字段。
更改您的代码。
构造函数中的数据对象是局部变量。 而且您没有初始化实例数据对象。
class CustomList
{
private int count;
private String[] data;
public int Count
{
get { return count; }
}
public CustomList(int arrayNum)
{
data = new String[arrayNum];
}
public CustomList(): this(4)
{
}
public void Add (String item)
{
if (count > data.Length)
{
String[] temp = new String[count * 2];
for (int i = 0; i < data.Length; i++)
{
temp[i] = data[i];
}
data = temp;
}
data[count] = item;
count++;
}