Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860

Исключение типа "System.NullReferenceException"

09.09.2016, 11:49. Показов 3339. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите найти ошибку. Выскакивает исключение "System.NullReferenceException".
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
namespace HomeTask06092016
{
    class University
    {
       public University()
        {
           
        }
        //private List<Student> Students = new List<Student>();
        private List<Group> groups = new List<Group>();
        // Property for groups;
        public List<Group> Groups { get; set; } 
        private List<Teacher> teachers = new List<Teacher>();
        // Property for teachers;
        public List<Teacher> Teachers { get; set; } 
        private List<Subject> subjects = new List<Subject>();
        // Property for subjects;
        public List<Subject> Subjects { get; set; }
 
        public void AddStudent(Student s, int groupIndex)
        {
            groups[groupIndex].Students.Add(s);
        }
 
 
        public void AddGroup(Group g)
        {
            groups.Add(g);
        }
 
        public void AddSubject(Subject s)
        {
            subjects.Add(s);
        }
 
        public void AddTeacher(Teacher t)
        {
            teachers.Add(t);
        }
 
 
        public void RemoveGroup(int groupIndex)
        {
            groups[groupIndex].Students.Clear();
            groups.RemoveAt(groupIndex);
 
        }
 
        public void RemoveStudent(int groupIndex, int studentIndex)
        {
            groups[groupIndex].Students.Clear();
            groups[groupIndex].Students.RemoveAt(studentIndex);
        }
 
        public void RemoveTeacher(int teacherIndex)
        {
            teachers.RemoveAt(teacherIndex);
 
        }
 
        public void RemoveSubject(int subjectIndex)
        {
            subjects.RemoveAt(subjectIndex);
 
        }
 
        //public Student this[string groupName][string studentName]{}
        // Indexer;
        public Student this[string groupName, string studentName] 
        {
            get
            {
                foreach (var g in groups)
                {
                    if (g.Name == groupName)
                        foreach (var s in g.Students)
                        {
                            if (s.Name == studentName)
                            {
                                return s;
                            }
                        }
                }
                return null; 
            }
            set
            {
                for (int i = 0; i < groups.Count; i++)
                {
                    if (groups[i].Name == groupName)
                    {
                        for (int j = 0; j < groups[i].Students.Count; j++)
                        {
                            if (groups[i].Students[j].Name == studentName)
                                groups[i].Students[j] = value;
                        }
                    }
 
                }
 
            }
        }
        public string GroupOf(Student s) {
            foreach (var g in groups)
            {
                foreach (var st in g.Students)
                {
                    if (s == st)
                        return g.Name;
                }
            }
            return null;
        }
    }
}

Класс Студента
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace HomeTask06092016
{
    class Student
    {
        public string Name { set; get; }
 
        public override string ToString() 
        {
            return Name;
        }
 
        private List<Subject> subjects = new List<Subject>();
        public List<Subject> Subjects { get; set; } // Property for subjects.
    }
}
Main
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace HomeTask06092016
{
    class Program
    {
        static void Main(string[] args)
        {
            /*           
            University group = new University();
            University u = new University();
            //u.AddStudent(group);
            //u["Vasya"].Name = "Petya"; // проверка;
            Console.Read();*/
            University targetUnivercity = new University();
            Group f = new Group(),s = new Group();
            f.Name = "PST"; s.Name = "ELT";
            targetUnivercity.AddGroup(f);
            targetUnivercity.AddGroup(s);
            Student u = new Student(); Student i = new Student();
            u.Name = "Petr";
            i.Name = "Gucci Mane";
            Console.WriteLine(u.Name + " " + i.Name);
            targetUnivercity.AddStudent(u, 1);
            targetUnivercity.AddStudent(i,2);
            Console.WriteLine(targetUnivercity.GroupOf(i));
            Console.Read();
 
        }
 
    }
}
Ругается на этот метод.
C#
1
2
3
4
public void AddStudent(Student s, int groupIndex)
        {
            groups[groupIndex].Students.Add(s);
        }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.09.2016, 11:49
Ответы с готовыми решениями:

При запуске программы ошибка Необработанное исключение типа "System.NullReferenceException"
При запуске программы выбивает ошибку Необработанное исключение типа &quot;System.NullReferenceException&quot;, подскажите в чём проблема....

Необработанное исключение типа "System.NullReferenceException"
Здравствуйте! Учу C#. Сейчас на этапе классов. Пробовал создавать объекты и заполнять их разными способами. Вот сейчас решил создать массив...

Необработанное исключение типа "System.NullReferenceException"
Добрый день, создаю два класса, в одном определяются поля покупка и цена, в другом объект ТList типа этого класса и некий метод addItem в...

8
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
09.09.2016, 11:59
Не приведён класс Groups. Проблема скорее всего в нём и скорее всего не проинициализировано поле Group.Students
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
09.09.2016, 12:04  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace HomeTask06092016
{
    class Group
    {
        public string Name { set; get; }
 
        public override string ToString()
        {
            return Name;
        }
 
        private List<Student> students = new List<Student>();
        // Property for students.
        public List<Student> Students { get; set; } // Property for students.
 
    }
}
0
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
09.09.2016, 12:14
Тогда не знаю. Либо groups равно null, либо groups[groupIndex] равно null, либо groups[groupIndex].Studens равно null, либо s равно null. Поставьте точку останова и сразу будет видно, что из этого null.
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
09.09.2016, 12:25  [ТС]
Ну пока только такое вижу.
Миниатюры
Исключение типа "System.NullReferenceException"  
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,098
09.09.2016, 12:41
Цитата Сообщение от Jman Посмотреть сообщение
Ругается на этот метод.
В C# индексация начинается с 0.
Вы добавили 2 группы, соответсвенно нужно добавлять студентов в группы 0 и 1, а не как у вас 1 и 2
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
09.09.2016, 12:45  [ТС]
Цитата Сообщение от nedel Посмотреть сообщение
0 и 1, а не как у вас 1 и 2
Это ничего не меняет. Все остается по прежнему.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18286 / 14209 / 5368
Регистрация: 17.03.2014
Сообщений: 28,888
Записей в блоге: 1
09.09.2016, 12:47
Лучший ответ Сообщение было отмечено Jman как решение

Решение

Jman, во всех классах повторяется одинаковая ошибка.
C#
1
2
private List<Student> students = new List<Student>();
public List<Student> Students { get; set; }
Этим ты обьявляешь private поле и автоматически реализуемое свойство для которого компилятор генерирует свое private поле. Таким образом свойство Students остается неинициализированным и в итоге NullReferenceException.

Нужно отказаться от автоматически реализуемых свойств или от отказаться полей и инициализировать свойства в конструкторе.
Вариант раз
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Group
{
    public string Name { set; get; }
 
    public override string ToString()
    {
        return Name;
    }
 
    private List<Student> students = new List<Student>();
    public List<Student> Students
    {
        get { return students; }
        set { students = value; }
    } 
}

Вариант два
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Group
{
    public string Name { set; get; }
 
    public override string ToString()
    {
        return Name;
    }
 
    public List<Student> Students { get; set; }
 
    public Group()
    {
        Students = new List<Student>();
    }
}

Вариант для C# 6
C#
1
public List<Student> Students { get; set; } = new List<Student>();
2
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
09.09.2016, 12:54  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
во всех классах повторяется одинаковая ошибка.
Склоняю голову!!! Спасибо огромное! Вылечило.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.09.2016, 12:54
Помогаю со студенческими работами здесь

Исключение System.NullReferenceException
Ребят, не могу никак найти проблему, помогите вот код char separator = new char { ' ', ',' }; StreamReader sr = new...

Необработанное исключение: System.NullReferenceException
Здравствуйте, господа. Пожалуйста помогите разобраться: суть программы принять аргументы командной строки, проверить каждый аргумент...

Необработанное исключение: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта
При попытке вывода всех комплектующих выводит сообщение о необработанном исключениии using System; namespace lab1 { //...

Ошибка типа System.NullReferenceException при получении HTML-содержимого
Здравствуйте. Вот такая штука: using xNet.Net; using HtmlDocument = HtmlAgilityPack.HtmlDocument; namespace...

При попытке заполнить поле класса выбрасывается исключение "System.NullReferenceException"
При попытке заполнить поле класса выбрасывает исключение &quot;System.NullReferenceException&quot; обвиняет эту строку AData.A =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru