0 / 0 / 1
Регистрация: 15.01.2018
Сообщений: 30
1

Ошибка во время инициализации полей класса

09.04.2018, 21:27. Показов 580. Ответов 2

Здравствуйте.
Имеется класс:
C#
1
2
3
4
5
6
7
8
9
10
11
namespace MyApplication
{
    public class Engineer: WhiteCollarWorker
    {
        public int YearExperience{get; set;}
        
        public override string InformationOutput(Person obj)
        {
            return base.InformationOutput(obj)+"Experience — "+YearExperience+" year(s)\n";
        }
}
Он наследует от двух других классов:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace MyApplication
{
    public abstract class Person
    {
        public string Name{get; set;}
        public string Surname{get; set;}
        public int Age{get; set;}
        
        public virtual string InformationOutput(Person obj)
        {
            string info="Some personal information \n_________________________\n\n"+
                "Full name — "+Name+" "+Surname+
                "\nAge — "+Age+" years\n";
            return info;
        }   
    }
}
и
C#
1
2
3
4
5
6
7
8
9
10
11
12
namespace MyApplication
{
    public class WhiteCollarWorker: Person
    {
        public string Occupation{get; set;}
        
        public override string InformationOutput(Person obj)
        {
            return base.InformationOutput(obj)+"Occupation — "+Occupation+"\n";
        }
    }
}
Через Label хочу вывести информацию на экран с помощью метода InformationOutput. До этого информация должна быть введена в TextBox-ы. Вот как выглядит этот код:
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
namespace MyApplication
{
    public partial class MainForm : Form
    {
        public int i = 0;
        public Engineer[] engineer = new Engineer[100];
        
        public MainForm()
        {
            InitializeComponent();
        }
        
        void BtnAddEngineerClick(object sender, EventArgs e)
        {
            engineer [i] = new Engineer();
            engineer [i].Name = textboxName.Text;
            engineer [i].Surname = textboxSurname.Text;
            engineer [i].Age = int.Parse(textboxAge.Text);
            engineer [i].Occupation = textboxOccupation.Text;
            engineer [i].YearExperience = int.Parse(textboxExperience.Text);
            i++;
            ShowMessageForm inst=new ShowMessageForm();
            inst.Show();
            textboxName.Clear();
            textboxSurname.Clear();
            textboxAge.Clear();
            textboxOccupation.Clear();
            textboxExperience.Clear();
        }
        
        void BtnShowAllInformationClick(object sender, EventArgs e)
        {
            if (i==0)
                lblAllInfo.Text="There is no input information.";
            else
                for (int j=0; j<i; j++)
            {
                lblAllInfo.Text = engineer[i].InformationOutput(engineer[i]);
            }
        }           
    }
}
Но когда я нажимаю на кнопку для вывода информации образовывается ошибка System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.

Что я делаю не так? Помогите, пожалуйста.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2018, 21:27
Ответы с готовыми решениями:

Ошибка при инициализации полей класса
Помогите найти ошибку. Делаю игру 21. Инициализирую массив классов значениями. Но вылетает ошибка....

Подскажите разницу инициализации полей класса
Какой смысл инициализировать константы класса через список инициализации, если я всё равно задаю...

Как реализовать конструктор с параметрами для инициализации полей класса?
Подскажите как реализовать конструктор с параметрами для инициализации полей класса.

Почему лучше инициализировать объекты класса во время инициализации конструктора?
Имеется класс Rnd: class Rnd { public: Rnd::Rnd(int x); private: int val; };

2
Администратор
Эксперт .NET
13855 / 11228 / 4570
Регистрация: 17.03.2014
Сообщений: 22,635
Записей в блоге: 1
09.04.2018, 21:55 2
Shpit, у тебя цикл по j, а внутри используется i. Строки №36-39.
1
0 / 0 / 1
Регистрация: 15.01.2018
Сообщений: 30
09.04.2018, 22:04  [ТС] 3
OwenGlendower, спасибо за помощь. И как только я могла не обратить на это внимание...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2018, 22:04

Ошибка во время инициализации элементов объекта
Здравствуйте. В программе я создаю несколько классов с наследованием. Во время выполнения метода...

Инициализация полей во время объявления класса
Инициализировать поля класса во время его объявления возможно только если в классе отсутствует...

Синтаксическая ошибка при инициализации класса
Ругается на инициализацию списком struct Cord { int x=0, y=0, z=0; }; class Point {...

Ошибка при инициализации элемента класса
Добрый день, Нужна помощь более опытных форумчан, в поиске ошибки. Есть фрагмент кода: ...

Ошибка инициализации объекта, конструктором класса
Добрый день. Написал программу. Создание класса (упражнение из книги Дейтеля) &quot;Создайте класс...

Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time ().
Помогите пожалуйста написать программу на С++. Просто скоро курсовую сдавать, а классы мы еще не...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.