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

Сбрасываются значения переменных при наследовании

08.11.2018, 12:46. Показов 806. Ответов 8

Author24 — интернет-сервис помощи студентам
Добрый день. Столкнулся с интересной проблемой от которой зависит все.
Есть 3 класса:

Класс 1:
VB.NET
1
2
3
4
5
6
Public Class Variable_Mod
    Protected regL1 As String = ""
    Protected regL2 As String = ""
    Protected regL3 As String = ""
    Protected regL4 As String = ""
End Class
Класс 2:
VB.NET
1
2
3
4
5
6
7
8
9
Public Class c_Query
    Inherits Variable_Mod
    Friend Sub Query_AdminInfo()
        regL1 = dt.Rows(0).Item("Depart_L1").ToString
        regL2 = dt.Rows(0).Item("Depart_L2").ToString
        regL3 = dt.Rows(0).Item("Depart_L3").ToString
        regL4 = dt.Rows(0).Item("Depart_L4").ToString
    End Sub
End Class
Класс 3:
VB.NET
1
2
3
4
5
6
7
8
9
10
Public Class c_WordTabs
    Inherits Variable_Mod
    Public TabsList As New Dictionary(Of String, String)
    Friend Sub Tab()
        TabsList.Add("RegL1", regL1)
        TabsList.Add("RegProps_City__", regL2)
        TabsList.Add("RegProps_Adr__", regL3)
        TabsList.Add("RegProps_Phone__", regL4)
    End Sub
End Class
Когда выполняется процедура из 2 класса, данные в 1 классе остаются заполненными, и не являются значениями по умолчанию (""). Когда начинает выполняться процедура из 3 класса. Значения переменных 1 класса становятся по умолчанию, данные затираются. Как решить эту проблему? Есть ощущение что вся проблема в строке:
VB.NET
1
Inherits Variable_Mod
Еще имеется предположение что я пытаюсь сделать множественное наследование которого в VB нет) Помогите советом как решить проблему)

Добавлено через 44 минуты
И да, забыл добавить как я вызываю эти методы:
VB.NET
1
2
3
4
5
Dim cWordTabs As New c_WordTabs
Dim cQuery As New c_Query
 
cQuery.Query_AdminInfo()
cWordTabs.Tab()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2018, 12:46
Ответы с готовыми решениями:

Значения переменных сбрасываются при нажатии на кнопку
Доброго времени суток! Пишу симулятор игры BlackJack и столкнулся с проблемой: В процедуре одной...

При обращении к методу значения переменных сбрасываются на 0
Почему при обращении к методу CalculateTotalPerDiem() значения всех переменных сбрасывается на...

Сбрасываются значения переменных в структуре
Доброго времени суток. Есть одна структура. struct { bool AllowInFile; bool ...

Ошибка при наследовании с использованием закрытых переменных экземпляров
При изучении наследования с использованием закрытых переменных экземпляров появилась ошибка,...

8
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
08.11.2018, 14:14 2
Цитата Сообщение от StupidDev Посмотреть сообщение
данные в 1 классе остаются заполненными
Цитата Сообщение от StupidDev Посмотреть сообщение
И да, забыл добавить как я вызываю эти методы:
А где у Вас экземпляры 1-го класса ?
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12
08.11.2018, 14:28  [ТС] 3
Цитата Сообщение от SoftIce Посмотреть сообщение
А где у Вас экземпляры 1-го класса ?
при вызове?
0
Администратор
Эксперт .NET
16989 / 13348 / 5209
Регистрация: 17.03.2014
Сообщений: 27,295
Записей в блоге: 1
08.11.2018, 14:41 4
StupidDev, наследование здесь ни при чем. Переменные cWordTabs, cQuery это разные экземпляры и их поля это разные переменные. Поэтому изменение в одной переменной никак не отражается на другой.

Добавлено через 1 минуту
В данном коде вобще непонятен смысл наследования. Если опишешь задачу целиком, то можно будет предложить решение.
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12
08.11.2018, 14:54  [ТС] 5
Цитата Сообщение от OwenGlendower Посмотреть сообщение
В данном коде вобще непонятен смысл наследования. Если опишешь задачу целиком, то можно будет предложить решение.
хорошо, постараюсь объяснить)

У меня есть класс, в котором есть только переменные для работы с другими классами (Класс 1), далее есть у меня класс (Класс 2), в котором я выполняю обработку данных и заношу всю полученную инфу в переменные, которые содержаться в Классе 1. Далее мне необходимо из этих данных (которые записаны в Класс 1) составить коллекцию, благодаря которой у меня будет заполняться некий word файл (Класс 3).

В данный момент сохранность данных мне удалось решить благодаря Shared.
0
Администратор
Эксперт .NET
16989 / 13348 / 5209
Регистрация: 17.03.2014
Сообщений: 27,295
Записей в блоге: 1
08.11.2018, 15:04 6
StupidDev, это описание решения, а не задачи. Зачем тут три класса. Почему бы не сделать один класс с несколькими методами?

Цитата Сообщение от StupidDev Посмотреть сообщение
В данный момент сохранность данных мне удалось решить благодаря Shared.
С большой вероятностью это костыль.
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12
08.11.2018, 15:20  [ТС] 7
Цитата Сообщение от OwenGlendower Посмотреть сообщение
С большой вероятностью это костыль.
Так и есть, потому что ничего путного не придумал)
Цитата Сообщение от OwenGlendower Посмотреть сообщение
StupidDev, это описание решения, а не задачи. Зачем тут три класса. Почему бы не сделать один класс с несколькими методами?
Есть подпрограмма одной большой программы, она работает с документами Word. Суть программы в заполнении документов через закладки в самих документах. Изначально программа была написана чисто на одних модулях с Public правами, и короче не дипломный уровень. Моя задача заключается переделать эту программу до дипломного уровня. Тк там ООП не пахло, пришлось модули переделывать в классы. Тем самым стараясь уложиться в требования. Приходится извращаться( Тупо, но ничего другого нет, это реальная программа с которой работают люди.

А насчет один класс с несколькими методами... Самый большой класс это Класс 2, тк там больше 15 методов. которые по смыслу (обработка данных) собраны одном месте. А вот все остальное разнес по другим.
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.11.2018, 17:00 8
Цитата Сообщение от StupidDev Посмотреть сообщение
переделать эту программу до дипломного уровня
Тогда будет полезно в дополнение к ООП прикрутить ещё OpenXML, уйдя от Interop
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12
09.11.2018, 08:28  [ТС] 9
Цитата Сообщение от ViterAlex Посмотреть сообщение
Тогда будет полезно в дополнение к ООП прикрутить ещё OpenXML, уйдя от Interop
Спасибо за предложение, попробую такой еще вариант сделать с файлами.
0
09.11.2018, 08:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2018, 08:28
Помогаю со студенческими работами здесь

При переходах по формам значения Combobox-ов сбрасываются
Создал 5 форм, на одной форме есть serial port, в другой форме настройка для порта, на следующей...

Сохранение значения переменной при наследовании
Есть ли способ сохранить полученное значение переменной count в дочернем классе B после...

Почему при наследовании метода из базового класса получаются одинаковые значения?
столкнулся с такой проблемой. Есть два класса: Player и Dealer, оба наследуют от класса Hand,...

Сбрасываются значения компонента option
Добрый вечер, форумчане! Возникла небольшая неприятность при создании простого калькулятора....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru