c# - 初始化时,它说 "Object reference not set to an instance of an object"

标签 c#

我是 C# 的新手,我有一个错误,我无法猜测它为什么会发生。这是上下文:

我有一个 DataPair 类,它就是一对数据(字符串、 float )。我还有另一个类 DataSet,它是一个数据对数组。

DataSet 有两个私有(private)成员:

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。

但是我在执行的时候出现了这个错误:

"Object reference not set to an instance of an object" in function Append.

发生了什么事?

最佳答案

您还没有初始化_dataPair。 _datapair = new DataPair[大小];

反正Append里面的代码是错的。您不能以这种方式增加数组的大小。也许你使用 List<DataPair> 会更好而不是数组。

关于c# - 初始化时,它说 "Object reference not set to an instance of an object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3253154/

相关文章:

c# - 刷新窗体上的所有控件

c# - 在 Linq 投影中使用方法

javascript - 后操作后 View 中未收到 ViewBag

C#EF6 : Two navigation properties of the same type

c# - C 中 char 存储为 int 数组?如何将其转换为 C#

c# - MongoDB 如何在单个查询中从集合的中间开始获取 K 个文档?

c# - linq 查询区分大小写

c# - 数据源不支持更新,除非指定了 UpdateCommand

c# - Wpf 实时数据绑定(bind)到 ListView

c# - 创建和使用我自己的纹理图集的 mipmap