Инициализация объектов другого класса? - PullRequest
0 голосов
/ 15 января 2019

У меня есть один класс с 2 списками в качестве члена данных. Я хочу включить эти члены данных как объекты другого класса.

Я получаю эту ошибку:

"Ссылка на объект не установлена ​​для экземпляра объекта."

Просьба сообщить, какой должен быть правильный подход.

class dataPoints
{
    public List<double> dataValues;
    public List<DateTime> timeStamps;

    public dataPoints()
    {
      this.timeStamps = new List<DateTime>();
      this.dataValues = new List<double>();
    }
}


//I want an object of dataPoints in this below classs
class wellGraph
{
    int seriesAdded;
    dataPoints[] graphDataPoints;

    public wellGraph(int Entries)
    {
        this.seriesAdded = 0;
        this.graphDataPoints = new dataPoints[Entries];

        for(int i=0;i<Entries;i++)
        {
            graphDataPoints[i].timeStamps = new List<DateTime>();
            graphDataPoints[i].dataValues = new List<double>();
        }

    }
}

После удаления конструктора в классе dataPoints сохраняется та же ошибка.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы создали экземпляр массива, но не элементы внутри.

for(int i = 0; i < Entries; i++)
{
    graphDataPoints[i] = new dataPoints();
    // I removed the lines below because they are already initialized in the constructor
    // graphDataPoints[i].timeStamps = new List<DateTime>();
    // graphDataPoints[i].dataValues = new List<double>();
}
0 голосов
/ 15 января 2019

Вы создали массив dataPoints (который должен называться DataPoints в соответствии со стандартами именования C #), но вы не создали сами объекты dataPoints. Все элементы в массиве являются нулевыми, поэтому исключение нулевой ссылки.

Следовательно, внутри цикла for вы должны создать dataPoints объекты, используя new dataPoints():

for(int i=0;i<Entries;i++)
{
    graphDataPoints[i] = new dataPoints();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...