Массив произвольного размера в классе

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Taandr
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 19.10.2008 (Вс) 12:52

Массив произвольного размера в классе

Сообщение Taandr » 19.10.2008 (Вс) 12:55

При попытке изменения размера динамического массива в классе получаю ошибку
Use the "new" keyword to create an object instance.

Код: Выделить всё
Код:
Public Class C
    Private m_arr() As Integer
...   
    Public Sub setDim(ByVal cnt As Integer)       
        ReDim m_arr(cnt)   
    End Sub
...
End Class


Где я должен сделать
Dim m_arr
чтобы исключить ошибку?

В инете ответ не нашел.
Про класс ArrayList знаю.
Объект класса С создается new.
Использую VS 2005

Спасибо.

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Массив произвольного размера в классе

Сообщение 1Steps » 19.10.2008 (Вс) 19:17

Всё работает.
Код: Выделить всё
Public Class C
    Public m_arr() As Integer

    Public Sub setDim(ByVal cnt As Integer)
        ReDim m_arr(cnt)
    End Sub

End Class


Код: Выделить всё
Public Class Form1
    Dim c As New C
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        c.setDim(10)
        MsgBox(c.m_arr.GetUpperBound(0))
    End Sub
End Class
Удалена за ненадобностью.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Массив произвольного размера в классе

Сообщение Viper » 20.10.2008 (Пн) 7:22

Taandr, в привиденном коде ошибки нет. Ошибка скорее всего указывает на попытку обращения к несозданному объекту класса. Т.е. скорее всего имеет место быть конструкция вида:
Код: Выделить всё
Dim pC As C
pC.setDim (100)
А должно быть, например, так:
Код: Выделить всё
Dim pC As New C
pC.setDim (100)
Весь мир матрица, а мы в нем потоки байтов!

Taandr
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 19.10.2008 (Вс) 12:52

Re: Массив произвольного размера в классе

Сообщение Taandr » 22.10.2008 (Ср) 22:50

Попробовал свой код в обычном приложении под Windows.
Действительно, все работает!
В Виндовом приложении этот код срабатывает без ошибок!
Дело в том, что я разрабатываю приложение для Windows Mobile
Видимо тут другие правила.
Поборол эту ошибку так:

Код: Выделить всё
Public Class C
...   
    Public Sub New()
        Dim arr() As Integer
        ReDim arr(0)
        m_arr = arr
    End Sub
...
End Class


При создании экземпляра класса создается и инициализируется локальная переменная - массив, а потом ссылка на этот массив записывается в глобальную переменную класса.
Так работает без ошибок.
Спасибо за внимание.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 93

    TopList  
cron