Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
17 / 9 / 4
Регистрация: 09.02.2014
Сообщений: 197

Можно ли создать класс со свойством-массивом?

26.06.2017, 08:23. Показов 2381. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Чтобы создать свойство класса в виде массива создал структуру:
VB.NET
1
2
3
<System.Serializable()> Public Structure AAA
    Dim BBB() As String
End Structure
в которой параметр является массивом.
Но создав экземпляр класса я не могу задать размерность этого массива:
VB.NET
1
2
Dim objMyClass As MyClass
ReDim objMyClass.AAA.BBB(10)
Так же не могу объявить размерность массива при создании структуры.
Как так, свойство класса может быть массивом, а размерность его не задать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.06.2017, 08:23
Ответы с готовыми решениями:

Как создать класс с полем, свойством, методом?
как создать класс который имеет метод,свойство,поля? помогите показать код ! ! !

В рамках консольного приложения создать класс А с полями а и b и свойством с
В рамках консольного приложения создать класс А с полями а и b и свойством с. Свойство – значение выражения над полями а и b (выражение и...

В рамках консольного приложения создать класс А с полями а и b и свойством с
В рамках консольного приложения создать класс А с полями а и b и свойством с. Свойство – значение выражения над полями а и b (выражение и...

4
399 / 318 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
26.06.2017, 10:00
Sampl, а где у вас объявление, что это новый класс и новая структура?
Выше вы обращаетесь к объекту, которого не существует.
Нужно делать примерно так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class Form1
    Dim cl As MyClasss
    Dim struct As MyClasss.AAA
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        cl = New MyClasss
        struct = New MyClasss.AAA
        ReDim struct.BBB(10)
        MsgBox(struct.BBB.Length.ToString)
    End Sub
    Public Class MyClasss
        Public Structure AAA
            Dim BBB() As String
        End Structure
    End Class
End Class
1
17 / 9 / 4
Регистрация: 09.02.2014
Сообщений: 197
26.06.2017, 11:24  [ТС]
Да, я не весь код написал, но строки Dim struct As MyClasss.AAA у меня точно не было. Я считал, что объявления Dim cl As MyClasss достаточно, а экземпляр структуры я объявлю типа так ReDim cl.AAA.BBB(10). Ведь обращаюсь я к обычным свойствам объекта как к обычным переменным? Для чего отдельный экземпляр struct ? И он никак не связан с cl ?
Если я уберу строки 2 и 5 все будет работать также, т.е. мой экземпляр структуры не связан с экземпляром cl, а мне хотелось чтобы одно из свойств экземпляра класса было массивом и существовало вместе с этим экземпляром.

Добавлено через 45 минут
Все получилось, структуру вынес из конструктора:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Class Form1
    Dim cl As MyClasss
    Public Structure AAA
        Dim BBB As String
    End Structure
    Public Class MyClasss
        Public CCC() As AAA
    End Class
    Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        cl = New MyClasss
        ReDim cl.CCC(10)
        MsgBox(cl.CCC.Length)
    End Sub
End Class
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
26.06.2017, 11:52
Как-то у вас все запутано. Если я правильно понял, вы хотите создать свойство в своем классе в виде массива.
Ну тогда все проще
VB.NET
1
2
3
4
5
6
7
8
9
10
Public Class Form1
    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim cl As New MyClasss
        MsgBox(cl.CCC.Length)
    End Sub
End Class
 
Public Class MyClasss
    Public CCC(10) As String
End Class
1
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
26.06.2017, 13:32
Лучший ответ Сообщение было отмечено Sampl как решение

Решение

А зачем вообще передавать размер массива? М.б. так лучше
VB.NET
1
2
3
4
5
6
7
Public Class MyClasss
    Public Property CCC As String()
End Class
'…
Dim cl As New MyClasss
cl.CCC = {"aa", "bb", "cc", "dd"}
MsgBox(cl.CCC.Length)
Если все же необходимо передать размер массива то, на мой взгляд, лучше так
VB.NET
1
2
3
4
5
6
7
8
9
Public Class MyClasss
    Public CCC As String()
    Public Sub New(ByVal dmn As Integer)
        ReDim CCC(dmn - 1)
    End Sub
End Class
'…
Dim cl As New MyClasss(10)
MsgBox(cl.CCC.Length)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.06.2017, 13:32
Помогаю со студенческими работами здесь

В рамках консольного приложения создать класс А с полями a и b и свойством с
Видел на форуме подобную тему, но там с++ В рамках консольного приложения создать класс А с полями a и b и свойством с. Свойство -...

Создать класс Student с динамическим массивом
Создать класс Student, который содержит поля id, ФИО, дата рождения(реализовать через JodaTime). Написать метод, который будет возвращать...

Создать класс для работы с массивом
При этом должны быть такие требования::-|:-|:stop: Разработать следующие члены класса: 1. Поля: • int IntArray; 2. Конструктор,...

Создать класс для роботы с одномерным массивом
Создать класс для роботы с одномерным массивом целых чисел. В ней должны быть поля int IntArray int n Должен быть который...

Создать класс для работы с массивом в форме
Вот такое задание: Нужно создать класс для работы с массивом,что содержат N элементов,в которую входят функции: -деструктор класса ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru