Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209

Создать вложенную структуру с модификатором доступа Private

15.10.2019, 22:03. Показов 1846. Ответов 9

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!

Столкнулся с проблемкой следующего характера:
Создаём две структуры (одна в другой)

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Mashine
 
    Public Structure TheMashine
      
       Public Structure Test
           Dim Manufacturer As Integer
           Dim Model As Integer
       End Structure
 
       Dim Test1 As Test
    End Structure
End Class
Имеем в результате при объявлении структуры "TheMashine":

VB.NET
1
2
3
Dim Test2 As TheMashine
Test2.Test1.Manufacturer = 1 
Test2.Test1.Model = 2
Тут всё замечательно, но как закрыть доступ ко вложенной структуре "Test" чтобы её нельзя было объявить вне структуры "TheMashine"?

VB.NET
1
2
Dim Test2 As TheMashine
Dim Test3 As TheMashine.Test ' В данном случае требуется закрыть доступ к объявлению через "TheMashine.Test"
Т.е. чтобы доступ к структуре "Test" остался только через экземпляр "Test1".
Если объявить как Private хоть на уровне класса хоть на уровне структуры то компилятор начинает ругаться.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.10.2019, 22:03
Ответы с готовыми решениями:

Как обратиться к массивам в классе с модификатором доступа Private
Всем добрый день! подскажите пожалуйста, если в классе есть 2 массива с модификатором доступа private, как сделать так,чтобы при создании...

Почему нельзя саздовать классы с модификатором private?
Почему нельзя создавать классы с модификатором private? Ошибка: "Элементы, определенные в пространстве имен, не могут объявляться в явном...

Именование свойств с модификатором private или protected
Всем привет, все никак не могу определиться со стилем в этом плане. Публичные свойства нам надо писать с заглавных букв, например,...

9
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
15.10.2019, 22:18
Лучший ответ Сообщение было отмечено Евгений_Пермь как решение

Решение

Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
компилятор начинает ругаться
Правильно делает. Скрыть вложенную структуру, в вашем случае невозможно, т.к. открытое поле Test1 имеет тип этой структуры. Поля Manufacturer и Model принадлежат структуре Test, а не полю Test1, если вы скроете Test, то и все поля должны быть скрыты и не выходить дальше одного уровня родительской структуры TheMashine

Решить можно так.
Скрыть структуру Test и поле Test1
Добавить свойства в структуру
VB.NET
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
TheMashine
    Public Structure TheMashine
 
        Private Structure Test
            Public Manufacturer As Integer
            Public Model As Integer
        End Structure
 
        Private Test1 As Test
 
        Public Property Manufacturer As Integer
            Get
                Return Test1.Manufacturer
            End Get
            Set(value As Integer)
                Test1.Manufacturer = value
            End Set
        End Property
 
        Public Property Model As Integer
            Get
                Return Test1.Model
            End Get
            Set(value As Integer)
                Test1.Model = value
            End Set
        End Property
    End Structure
1
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
15.10.2019, 22:27  [ТС]
Цитата Сообщение от Sklifosofsky Посмотреть сообщение
Скрыть структуру Test и поле Test1
Добавить свойства в структуру
В том и дело, что этот способ через свойства я знаю, но нужно было не это, а чтобы именно поле было в качестве структуры. Ну ежели нельзя, значит будем пользовать как есть)
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
15.10.2019, 22:33
Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
способ через свойства я знаю
А просто так ?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Mashine
 
    Public Structure Test
        Dim Manufacturer As Integer
        Dim Model As Integer
    End Structure
 
    Public Structure TheMashine
        Dim Test1 As Test
    End Structure
 
End Class
0
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
15.10.2019, 22:39  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
А просто так ?
С этим тоже проблем нет, но задумка была такая, что в первой структуре содержится несколько структур с несколькими полями. Оно всё работает, но когда список будет большим, то куча ненужной информации в виде структур будет мешать.
И тут получается, что обе структуры так же доступны на уровне класса.
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
15.10.2019, 22:46
Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
куча ненужной информации в виде структур будет мешать
Она и так будет "мешать". Я так понял, вам не нравится что все это в подсказках(Intellisense) вылезает? Используйте контрукции Namespace и складируйте второстепенный классы и структуры
1
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
15.10.2019, 22:50  [ТС]
Цитата Сообщение от Sklifosofsky Посмотреть сообщение
Используйте конструкции Namespace и складируйте второстепенный классы и структуры
Да, как вариант.
Благодарю за ответы!
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
16.10.2019, 12:50
Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
Создаём две структуры (одна в другой)
Зачем?
Сделайте так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Mashine
 
   Public Structure Test
       Dim Manufacturer As Integer
       Dim Model As Integer
   End Structure
 
    Public Structure TheMashine
       Dim Test1 As Test
    End Structure
    
End Class
Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
доступ к структуре "Test" остался только через экземпляр "Test1"
Экземпляры не могут закрывать доступ к декларации самих себя.
0
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
16.10.2019, 19:17  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Сделайте так
Можно и так, но разницы особой нет. Обе структуры будут доступны через экземпляр класса.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
19.10.2019, 14:58
Тогда не объявляйте их в классе, объявите в отдельном модуле.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2019, 14:58
Помогаю со студенческими работами здесь

Пространство имен и видимость классов с модификатором private
Добрый день ! С какой целью стоит private перед классом K ? По началу думал , что этот класс доступный только в пространстве B ...

Протабулировать функцию Z, используя вложенную циклическую структуру
На интервале и с шагом и протабулировать функцию Z, используя вложенную циклическую структуру (с помощью циклических конструкций While… do…...

Программа вычисления переменной X от х1 до х2 и Y от y1 до y2 используя вложенную циклическую структуру
Составить блок-схему, программу вычисления переменной X от х1 до х2 и Y от y1 до y2 используя вложенную циклическую структуру, где X –...

Стоит ли объявлять конструкторы абстрактного класса с модификатором доступа protected?
1. Стоит ли объявлять конструкторы абстрактного класса с модификатором доступа protected? ReSharper подсказывает что стоит, не могу понять...

Составить программу вычисления переменной X от х1 до х2 и Y от y1 до y2 используя вложенную циклическую структуру, где X – переменная внеш
Составить программу вычисления переменной X от х1 до х2 и Y от y1 до y2 используя вложенную циклическую структуру, где X – переменная...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru