Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Структурированные переменные Добавлено: 01.03.11 23:43  

Автор вопроса:  ninze
Доброго времени суток от начинающего програмера.
как-то возникла острая необходимость в чётко структурированных переменных. облазил пол интернета, но что-то ответа на свой вопрос не нашёл. в распоряжении VB2008.
вопрос таков- как сделать структурированную переменную.
пробовал через класс:
Public Class MPC
        Public Ayd As String
        Public Vr(100) As String
        Public Colr(100) As Integer
    End Class

однако возникала проблема, поскольку переменная
Dim MasPrClr(4) As MPC = New MPC
не могла стать массивом, а работала только как ссылка на класс.
пробовал через Enum, отказывается делать массивы внутри себя.
пробовал через Structure, отказывается работать с не динамическими векторами, иначе говоря с указанной размерность. а на динамические требует опять "New".
в общем, уважаемые спецы, подскажите пожалуйста как же привести в порядок переменные.
извините если где не заметил.
заранее спасибо.
P.S. нутром чую что должно быть простое и красивое описание. надо-то всего-то получить список: "название" и два параллельных вектора. на том же древнем паскале это делается в 2 строчки через рекорд.
если не подскажите придётся делать через стринговый массив, а оба вектора сливать в один, на подобии молнии.... но как-то это не красиво...

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 01.03.11 23:51
Для каждого элемента массива нужен новый инстанс класса. В этом суть. New создает один объект.
Dim MasPrClr(4) As MPC, i as long
for i=0 to 4
  set MasPrClr(i) = New MPC
next i

Ответить

Номер ответа: 2
Автор ответа:
 ninze



Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 01.03.11 23:53
Спасибо, за ответ. буду пробовать =)

Ответить

Номер ответа: 3
Автор ответа:
 ninze



Вопросов: 1
Ответов: 2
 Профиль | | #3 Добавлено: 02.03.11 00:00
огромное спасибо. работает всё на ура.а то уже начал зарываться в документацию...
вопрос немного не в тему, но интересно. почему i для счётчика описали до цикла? мне казалось что в функции цикла удобнее
( For i As Integer = 0 To 4), главное потом нигде не мешается. ещё какой мудрости не знаю?

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 02.03.11 01:46
Winand пишет:
 i as long

В дотнете массивы индексируются integer'ом (32 битное целое знаковое число). С long будет ошибка (при условии если компилировать с включенной жесткой проверкой типов)

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 02.03.11 21:29
ninze, нее, это я не знаю мудрости:-) это синтаксис классического бейсика) Конечно в нормальных языках можно объявлять в описании цикла
Artyom, Integer 32битный? а long тогда какой?

Ответить

Номер ответа: 6
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #6 Добавлено: 02.03.11 21:35
64х битный, конечно же.

Ответить

Номер ответа: 7
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #7
Добавлено: 02.03.11 21:41
64-х битный. Раста, VB6 запливали еще когда все херачили на 16-битных системах. Поэтому у него Integer - 16-битный. Щас все интегеры 32-битные, лонги 64-битные. Для кошерности можно еще взять Decimal - 96 бит. А Вообще, можно же как-то так (примерно):
  1.  
  2. public class BigArray <T>
  3. {
  4. T[,] vars = new T[int.Max, int.Max];
  5. public int GetItem(long index)
  6. {
  7.    return vars[index / int.Max, index % max];
  8. }
  9. }


Так что все можно. Ставите дополнительно еще 73 миллиарда гигабайт оперативной памяти к себе в комп, и все с радостью заработает, смекнули?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам