Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Spring3
2 / 2 / 0
Регистрация: 16.04.2013
Сообщений: 13
1

Интерфейсы. Ссылка на объект не указывает на экземпляр объекта

16.04.2013, 18:50. Просмотров 553. Ответов 2
Метки нет (Все метки)

Добрый день. По лабе задали написать программку. Есть иерархия из 3-х классов (Предмет, Фамилия, Оценка). Нужно использовать интерфейсы. Я реализовал свою программу так, что у меня все данные вводятся с клавиатуры и дальше с помощью сериализации забиваються в бинарный файлик. При загрузке формы происходит десереализация из файлов и все данные выводяться в листбокс. Так вот, дебаггер показал, что внутри класса массив (куда забиваються данные из файлов при десереализации) заполняется нормально, но вот при вызове данного массива извне, вибивает ошибку, мол ссылка на объект не указывает на экземпляр объекта. (Массив мой = null). Уже кучу времени убил, не могу найти причину. Думаю, что где-то ошибка в интерфейсе. Помогите пожалуйста
Кусочек кода внутри класса :
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
// стандартные библиотеки
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
 
namespace Lab8
{
    interface Load
    {
        void Deserial();
    }
 
    [Serializable]
    public class Subject: Load
    {
     public string[] subjectdeser;
     public void Deserial()
        {
            FileStream f = new FileStream("Subject.bin", FileMode.Open);
            BinaryFormatter bf = new BinaryFormatter();
            subjectdeser = (string[])bf.Deserialize(f);
            f.Close();
        }
    }
}
Вызов на форме:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
 
namespace Lab8
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
            try
            {
                
                ls.Deserial();
                foreach (string i in sb.subjectdeser)  //здесь выбивает ошибку
                    listBoxOut.Items.Add(i);
                lst.Deserial();
                foreach (string i in st.studentdeser)  //и здесь
                    listBoxOut.Items.Add(i);
                lm.Deserial();
                foreach (char i in m.markdeser)  //и здесь
                    listBoxOut.Items.Add(i);
            }
            catch (FileNotFoundException)
                {
                }
        }
        Mark m = new Mark();
        Subject sb = new Subject();
        Students st = new Students();
        Load ls = new Subject();
        Load lst = new Students();
        Load lm = new Mark();
        }
}
P.S: Надеюсь тему в нужном месте создал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 18:50
Ответы с готовыми решениями:

Ссылка на объект не указывает на экземпляр объекта
День добрый! при выполнение кода: private void Window_Loaded(object...

Ссылка на объект не указывает на экземпляр объекта
Ругается на строку с for ... не могу понять что там не так помогите...

Ссылка на объект не указывает на экземпляр объекта
XmlTextReader XmlTextReader = new XmlTextReader("D:\\One.xml"); ...

Ссылка на объект не указывает на экземпляр объекта
Пытаюсь получить из текста в несколько строк string text, массив слов string...

Ссылка на объект не указывает на экземпляр объекта
Ругается на строчку "mas1.url.Add(@reader.Value);" public struct filemas ...

2
kolorotur
Эксперт .NET
10492 / 8680 / 2159
Регистрация: 17.09.2011
Сообщений: 14,900
Завершенные тесты: 1
16.04.2013, 20:48 2
Здравствуйте.

Вы десериализируете объект ls, а обход потом делаете по объекту sb, который не десериализирован.
Потом вы десериализируете lst, а обходите st.
Напоследок десериализируется lm, а обходится m.
1
Spring3
2 / 2 / 0
Регистрация: 16.04.2013
Сообщений: 13
16.04.2013, 21:14  [ТС] 3
Спасибо вам. Проблемма решена. Переписал массив на свойство, а также добавил его в интерфейс. Все работает. Заслужили +1
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2013, 21:14

Ссылка на объект не указывает на экземпляр объекта
покажите пожалуйста что не так с кодом: using System; using...

Ссылка на объект не указывает на экземпляр объекта
Ссылка на объект не указывает на экземпляр объекта Вот в этих файлах Строка...

Ссылка на объект не указывает на экземпляр объекта:(
Не могу понять в чем дело: namespace ConsoleApplication1 { class...


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

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

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