【发布时间】:2010-07-15 06:57:48
【问题描述】:
我对 C# 完全陌生,我遇到了一个错误,我无法猜测它为什么会发生。这是上下文:
我有一个 DataPair 类,就是一对数据(字符串、浮点数)。我还有另一个类 DataSet,它是一个 DataPairs 数组。
DataSet 有两个私有成员:
private DataPair [] _datapair;
private int _size;
DataSet 的构造函数对 _datapair 不做任何事情,将 _size 设置为 0。
我用 Append 方法填充 DataSet,它执行如下操作:
public void Append(DataPair pair)
{
_datapair[_size] = new DataPair(pair);
_size++;
}
我从另一个方法 FillFromFile 调用 Append:
public void FillFromFile(string filepath)
{
try
{
if (System.IO.File.Exists(filepath))
{
System.IO.StreamReader sr = new System.IO.StreamReader(filepath);
string[] currentdata;
while (sr.Peek() >= 0)
{
currentdata = sr.ReadLine().Replace(',', '.').Trim().Split(';');
this.Append(new DataPair(currentdata[0], System.Convert.ToSingle(currentdata[1])));
}
sr.Close();
}
}
catch (Exception e)
{
Console.WriteLine("Error in datafile: {0}", e.ToString());
}
}
它似乎应该可以工作:它为每个 Append 创建(新)一个新的 DataPair。
但执行时出现此错误:
函数Append中的“对象引用未设置为对象的实例”。
发生了什么?
【问题讨论】:
-
与您的问题完全无关,但您正在传递“new DataPair(currentdata[0], System.Convert.ToSingle(currentdata[1]))”并且在您执行“_datapair[_size”的方法中] = 新数据对(对);"。您不需要这样做,因为您正在创建 2 个对象,而您只需要一个对象。如果在最终解决方案中使用数组,那么 _datapair[_size] = pair 就足够了。阅读 C# 中的值类型和引用类型
标签: c#