powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как правильно инициализировать свойства объекта - Visual Basic .NET
7 сообщений из 7, страница 1 из 1
Как правильно инициализировать свойства объекта - Visual Basic .NET
    #39472844
SSR2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, товарищи-форумчане!
Помогите с VB net.
Имеется следующий класс

Код: vbnet
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.
45.
46.
47.
48.
49.
50.
51.
Partial Public Class pledgeNotificationPackageType
        
        Private packageIdField As String
        
        Private uipField As String
        
        Private senderTypeField As senderTypeType
        
        Private pledgeNotificationListField() As pledgeNotificationListElementType
        
        '''<remarks/>
        Public Property packageId() As String
            Get
                Return Me.packageIdField
            End Get
            Set
                Me.packageIdField = value
            End Set
        End Property
        
        '''<remarks/>
        Public Property uip() As String
            Get
                Return Me.uipField
            End Get
            Set
                Me.uipField = value
            End Set
        End Property
        
        '''<remarks/>
        Public Property senderType() As senderTypeType
            Get
                Return Me.senderTypeField
            End Get
            Set
                Me.senderTypeField = value
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlArrayItemAttribute("pledgeNotificationListElement", IsNullable:=false)>  _
        Public Property pledgeNotificationList() As pledgeNotificationListElementType()
            Get
                Return Me.pledgeNotificationListField
            End Get
            Set
                Me.pledgeNotificationListField = value
            End Set
        End Property
    End Class



И еще один:

Код: vbnet
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.
Partial Public Class pledgeNotificationListElementType
        
        Private notificationIdField As String
        
        Private documentAndSignatureField() As Byte
        
        '''<remarks/>
        Public Property notificationId() As String
            Get
                Return Me.notificationIdField
            End Get
            Set
                Me.notificationIdField = value
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(DataType:="base64Binary")>  _
        Public Property documentAndSignature() As Byte()
            Get
                Return Me.documentAndSignatureField
            End Get
            Set
                Me.documentAndSignatureField = value
            End Set
        End Property
    End Class



Инициализирую класс и его свойства:
Код: vbnet
1.
2.
3.
4.
5.
Dim pType As pledgeNotificationPackageType = New pledgeNotificationPackageType
pType.packageId = "fefac464-c8e1-4f40-8278-06f6b42983ce" 
pType.uip = "100000000000000000"
pType.senderType = "1"
pType.pledgeNotificationList(0).notificationId = "27f31b86-8586-4f0e-91af-98e8367dd8dc"



Но на последней строке вылетает исключение:
Необработанное исключение типа "System.NullReferenceException"
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.

Подскажите, как правильно инициализировать pType.pledgeNotificationList?
...
Рейтинг: 0 / 0
Как правильно инициализировать свойства объекта - Visual Basic .NET
    #39473001
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSR2017,

Массив pledgeNotificationListField() только объявляется, явно в приведённом коде не создаётся.
Его создание можно было бы втиснуть в конструктор класса pledgeNotificationPackageType.
...
Рейтинг: 0 / 0
Как правильно инициализировать свойства объекта - Visual Basic .NET
    #39473017
SSR2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barkan,
подскажите, как это сделать? но хотелось бы объявить его прямо в коде, если такое возможно.
Просто описание класса описано сторонним разработчиком.
...
Рейтинг: 0 / 0
Как правильно инициализировать свойства объекта - Visual Basic .NET
    #39473050
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSR2017,

Попробуй вот так:

Private pledgeNotificationListField() As pledgeNotificationListElementType = {New pledgeNotificationListElementType()}

или

Private pledgeNotificationListField(0) As pledgeNotificationListElementType
pledgeNotificationListField(0) = New pledgeNotificationListElementType()
...
Рейтинг: 0 / 0
Как правильно инициализировать свойства объекта - Visual Basic .NET
    #39474072
SSR2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barkan,

Если прописываю так
Код: vbnet
1.
Private pledgeNotificationListField() As pledgeNotificationListElementType = {New pledgeNotificationListElementType()}


Затем пробую добавить 5 элементов

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim i As Integer
Dim str As String = "8a0e57e4-779a-435c-bc29-909d08f90479" 
сonsole.WriteLine("Длина массива " & pType.pledgeNotificationList.Length)
 For i = 0 To 4
            Console.WriteLine(i)
            pType.pledgeNotificationList(i).notificationId = str
 Next



Размер массива = 1.
Ошибка Индекс находился вне границ массива.

Пробую изменить размер массива
Код: vbnet
1.
ReDim Preserve pType.pledgeNotificationList(0 To 4)


Тогда ругается на: Ссылка на объект не указывает на экземпляр объекта.
...
Рейтинг: 0 / 0
Как правильно инициализировать свойства объекта - Visual Basic .NET
    #39474122
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private pledgeNotificationListField() As pledgeNotificationListElementType

        ReDim pType.pledgeNotificationList(0 To 4)
        For i = 0 To 4
            Console.WriteLine(i)
            pType.pledgeNotificationList(i) = New pledgeNotificationListElementType With {.notificationId = sStr}
        Next

Str это имя VB-функции, не надо так называть переменные.
...
Рейтинг: 0 / 0
Как правильно инициализировать свойства объекта - Visual Basic .NET
    #39474133
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSR2017,

Никто же не знает сколько надо элементов массива. В примере я показал создание массива из 1 элемента.
Если надо 5, то пишите так:

Код: vbnet
1.
Private pledgeNotificationListField() As pledgeNotificationListElementType = {New pledgeNotificationListElementType(), New pledgeNotificationListElementType(), New pledgeNotificationListElementType(), New pledgeNotificationListElementType(), New pledgeNotificationListElementType()}



или

Код: vbnet
1.
2.
3.
4.
5.
6.
Private pledgeNotificationListField(4) As pledgeNotificationListElementType
pledgeNotificationListField(0) = "sdjfhsdjkfh"
pledgeNotificationListField(1) = "sdjfhsdjkfh"
pledgeNotificationListField(2) = "sdjfhsdjkfh"
pledgeNotificationListField(3) = "sdjfhsdjkfh"
pledgeNotificationListField(4) = "sdjfhsdjkfh"



А с ReDim по моему указание размера (0 To 4) не катит. Просто пишите

Код: vbnet
1.
ReDim Preserve pType.pledgeNotificationList(4)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как правильно инициализировать свойства объекта - Visual Basic .NET
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]