0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 32

Передача членов базового класса классу наследнику

30.11.2018, 17:21. Показов 3177. Ответов 14

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть класс базовый класс TSP, в поле textFileContent которого передаю содержание файла .txt:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public partial class TSP : Form
    {
    private List<string> textFileContent;    
    private void openToolStripMenuItem1_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == DialogResult.Cancel)
            return;
            string filename = openFileDialog1.FileName;
            textFileContent = File.ReadAllLines(filename).ToList();//Тут есть содержимое
    }
    public List<string> FileContent
    {
        get { return fileContent; }
    }
Есть класс - наследник ReadWriteCoordinates, в который пытаюсь передать содержимое поля textFileContent для последующей работы с ним:
C#
1
2
3
4
5
6
class ReadWriteCoordinates : TSP
    {
        public List<List<double>> GetToArr()
        {
            TSP Data = new TSP();
            List<string> textFileContent = Data.FileContent;//Тут пусто, null
Я считал, что могу обратиться к полю с помощью его общедоступного свойства, но что - то пошло не так.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2018, 17:21
Ответы с готовыми решениями:

Приведение базового класса к наследнику
Допустим, есть такие классы class First { public string fieldFirst; } class Second:First { public string fieldSecond; }Из...

Добавить новый интерфейс классу-наследнику
У меня есть using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ...

В приведенном коде base может изменить значения членов базового класса в самом базовом классе
using System; class a { public int x; public a() { x = 122; } } class b : a {public b() {base.x =...

14
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.11.2018, 18:26
Возможно нужно:
C#
13
get { return textFileContent; }
0
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 32
30.11.2018, 19:51  [ТС]
Даценд, к сожалению все тот же ArgumentNullException.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
30.11.2018, 20:14
Цитата Сообщение от Kurupt Посмотреть сообщение
Я считал, что могу обратиться к полю с помощью его общедоступного свойства, но что - то пошло не так.
Да, это так. Но у Вас поле textFileContent не общедоступно. Поменяйте его модификатор доступности на public, internal или protected.

Добавлено через 2 минуты
Так же у Вас ошибка и при обращении к нему в наследнике. Вы не записываете в него. А объявляете новое поле с видимостью ограниченной методом.
Для записи надо просто указать имя без объявления типа.
1
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.11.2018, 21:11
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Поменяйте его модификатор доступности на public, internal или protected
Не нужно. Через открытый метод/свойство доступ к закрытому полю будет.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для записи надо просто указать имя без объявления типа.
Не поможет.

Дело в том, что строкой
C#
1
TSP Data = new TSP();
создается новый экземпляр класса TSP, к тому, в котором
Цитата Сообщение от Kurupt Посмотреть сообщение
есть содержимое
отношения не имеющий.

Kurupt,
Мне кажется, у вас что-то не так с архитектурой приложения. Зачем класс наследуется от формы и затем в методе создается еще один экземпляр базового класса?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
30.11.2018, 21:19
Цитата Сообщение от Даценд Посмотреть сообщение
Не нужно. Через открытый метод/свойство доступ к закрытому полю будет.
ТС пишет о прямом доступе к полю. Без использования методов.
Цитата Сообщение от Даценд Посмотреть сообщение
Дело в том, что строкой
C#Выделить код
C#
1
TSP Data = new TSP();
создается новый экземпляр класса TSP, к тому, в котором
Да, но ТС пишет не о свойстве FileContent и поле fileContent объекта Data, а о поле textFileContent класса ReadWriteCoordinates, но недоступному из-за модификатора доступа.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.11.2018, 21:30
Цитата Сообщение от Элд Хасп Посмотреть сообщение
о поле textFileContent класса ReadWriteCoordinates, но недоступному из-за модификатора доступа
Не-не-не. Наоборот. Там же так:
Цитата Сообщение от Kurupt Посмотреть сообщение
Есть класс - наследник ReadWriteCoordinates, в который пытаюсь передать содержимое поля textFileContent
Добавлено через 1 минуту
Или я неправильно понял и это следует читать как
Есть некий класс - наследник класса ReadWriteCoordinates, в который пытаюсь передать содержимое поля textFileContent...
???

Добавлено через 56 секунд
Но тогда при чем здесь
Цитата Сообщение от Kurupt Посмотреть сообщение
//Тут есть содержимое
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
30.11.2018, 21:30
Цитата Сообщение от Даценд Посмотреть сообщение
Или я неправильно понял и это следует читать как
Есть некий класс - наследник класса ReadWriteCoordinates, в который пытаюсь передать содержимое поля textFileContent...
???
Да, там TC непонятно выражается, но по коду становится понятно, что он хотел сказать.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.11.2018, 21:32
Цитата Сообщение от Элд Хасп Посмотреть сообщение
по коду становится понятно, что он хотел сказать
Ни разу не становится.

Kurupt, все-таки, что от чего наследуется и что куда передается?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
30.11.2018, 21:33
Цитата Сообщение от Даценд Посмотреть сообщение
Но тогда при чем здесь
Не знаю. Не ясно и путано выражает свои мысли..., наверное.
0
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 32
30.11.2018, 21:46  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
Или я неправильно понял и это следует читать как
Нет, Вы все правильно поняли. Я пытался передать в производный класс ReadWriteCoordinates содержимое private поля используя открытое свойство.
Цитата Сообщение от Даценд Посмотреть сообщение
Зачем класс наследуется от формы
Вы имеете ввиду зачем класс TSP наследует форму? Если да, то мне почему то казалось, что это наследование позволяет работать с элементами формы (кнопки, списки, текстовые поля и т.п.)
По задумке класс ReadWriteCoordinates наследует класс TSP, чтобы разделить функциональность классов, то есть в классе TSP происходит чтение и запись текстового файла, и выполняется событие нажатия некой кнопки на форме. В классе ReadWriteCoordinates по задумке происходит обработка полученного текстового файла (извлекается необходимая информация). Сейчас это все выполняется в одном классе, но хотелось бы распределить действия.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.11.2018, 21:52
Цитата Сообщение от Kurupt Посмотреть сообщение
ReadWriteCoordinates наследует класс TSP, чтобы разделить функциональность классов
Разделение функциональности классов быть должно. Но в данном случае только такое: Класс ReadWriteCoordinates читает координаты, делает списки, сортирует, т.е. всячески обрабатывает данные. Класс формы отображает данные в контролах и дает команды методам класса. И наследование при этом совершенно ни к чему.
1
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
30.11.2018, 21:57
Цитата Сообщение от Kurupt Посмотреть сообщение
Вы имеете ввиду зачем класс TSP наследует форму? Если да, то мне почему то казалось, что это наследование позволяет работать с элементами формы (кнопки, списки, текстовые поля и т.п.)
По задумке класс ReadWriteCoordinates наследует класс TSP, чтобы разделить функциональность классов, то есть в классе TSP происходит чтение и запись текстового файла, и выполняется событие нажатия некой кнопки на форме. В классе ReadWriteCoordinates по задумке происходит обработка полученного текстового файла (извлекается необходимая информация). Сейчас это все выполняется в одном классе, но хотелось бы распределить действия.
Если речь идет о Single Responsibility принципе - то суть в разделении ответственности объектов, а не классов.
Вообще, наследование нынче - плохая практика с точки зрения дизайна. Используйте агрегацию/композицию (как завещали ребята из GoF).
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
30.11.2018, 22:01
Цитата Сообщение от Kurupt Посмотреть сообщение
Вы имеете ввиду зачем класс TSP наследует форму? Если да, то мне почему то казалось, что это наследование позволяет работать с элементами формы (кнопки, списки, текстовые поля и т.п.)
По задумке класс ReadWriteCoordinates наследует класс TSP, чтобы разделить функциональность классов, то есть в классе TSP происходит чтение и запись текстового файла, и выполняется событие нажатия некой кнопки на форме. В классе ReadWriteCoordinates по задумке происходит обработка полученного текстового файла (извлекается необходимая информация). Сейчас это все выполняется в одном классе, но хотелось бы распределить действия.
Наследование от формы возможно, но с формой наследуются и все визуальные элементы.
Если у Вас есть несколько форм с большим количеством одинаковых элементов, то можно сделать базовую куда вынести эти одинаковые элементы. И потом от неё наследовать и добавлять в наследники дополнительные элементы. Но обычно подобное делается через UserControl.
В Вашем случая, как я понял, конечная форма будет одна. И смысла в таком нет.
1
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 32
30.11.2018, 23:08  [ТС]
Ребята, всем огромное спасибо, для меня каждое ваше сообщение - пища для размышлений!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2018, 23:08
Помогаю со студенческими работами здесь

Применение стиля к наследнику базового класса
Привет! Есть базовый класс QTabWidget. Определяю свой собственный класс TabWidget, который является наследником QTabWidget. ...

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

В наследнике не видно членов базового класса
в чем ошибка кто подскажет? )).... val не видит #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; class Base { ...

Запретить наследование некоторых членов базового класса
можно ли запретить унаследование некоторых членов базового(любого) класса?

Не могу вернуть подключение классу наследнику php ооп
День добрый.. не могу вернуть подключение классу наследнику.. для дальнейшей работы базы данных.. Раньше программировал процедурной...


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

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

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru