System.NullReferenceException: “Ссылка на объект не указывает на экземпляр объекта.” При добавлении в список

108
18 января 2020, 03:40

Я пытаюсь реализовать добавление некоторого сигнала в список (Signals), внутри каждого signal другой список c данными (chunk). Вот код:

public static class DataGather
    {
        public class Sample : IComparable<Sample>
        {
            public string Time_ms;
            public string VarValue;
            public int CompareTo(Sample other)
            {
                // If other is not a valid object reference, this instance is greater.
                if (other == null) return 1;
                return Time_ms.CompareTo(other.Time_ms);
            }
        }
        public struct Chunk 
        {
            public List<Sample> samples;
        }
        public class Signal
        {
            public string VarName;
            public List<Chunk> chunks;
        }
        public static List<Signal> Signals = new List<Signal>();

При попытке добавить в элемент списка Signals данные "chunk" вызывается ошибка: System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."

chunk.samples было null. Вот тестовый пример добавления данных в список "Signals"

class Program
    {
        static void Main(string[] args)
        {
            Signal signal = new Signal();
            Chunk chunk = new Chunk();
            Sample sample = new Sample();
            signal.VarName = "Signal1";
            Signals.Add(signal);
            foreach (var el in Signals)
            {
                Console.WriteLine(el.VarName);
                int indexSignal = Array.IndexOf(Signals.ToArray(), el);
                sample.Time_ms = "10ms";
                sample.VarValue = "1";
                chunk.samples.Add(sample);
                Signals[indexSignal].chunks.Add(chunk);
            }
            Console.Read();
        }
    }

Ошибка в этой строке, как исправить ошибку?:

chunk.samples.Add(sample);
Answer 1

Ваш цикл вызывает недоумение, но допустим, что это тестовый код.

    public struct Chunk 
    {
        public List<Sample> samples = new List<Sample>();
    }
    public class Signal
    {
        public string VarName;
        public List<Chunk> chunks = List<Chunk>();
    }
READ ALSO
Перевод binary to string

Перевод binary to string

Получилось перевести текст в binary, но обратно не получается

109
Фильтрация по dataGrid в wpf c#

Фильтрация по dataGrid в wpf c#

Делаю аис для аэропорта, в рамках курсового проектаДля удобного использования бд решил делать фильтрация в реальном времени

128
Как повернуть изображение в PictureBox на x градусов?

Как повернуть изображение в PictureBox на x градусов?

Необходимо повернуть PictureBox на x градусов при нажатии на кнопкуПока что нашел только поворот через bitmap1

169
Как реализовать Alt+TAB

Как реализовать Alt+TAB

В окне формы ввожу логин и пароль, затем selenium заходит на сайт, авторизуется, забирает необходимые данные и записывает их в comboBox1 на этой же формеПользователь...

124