Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Динамические имена классов? Добавлено: 23.11.07 23:22  

Автор вопроса:  zaitsman | Web-сайт: zaitsman.mine.nu | ICQ: 61452976 
Есть класс как список переменных.
Этот класс используется 17 раз в программе - создается 17 классов по шаблону - Класс1,класс2...класс17.
В программе в зависимости от выбора пользователя нужно использовать данные одного из 17 классов. Можно ли сделать так, чтобы было чтото аля
if (выбор_пользователя=X) then
a=классX.переменная*2

Если да, то как?

Ответить

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

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



ICQ: 61452976 

Вопросов: 2
Ответов: 12
 Web-сайт: zaitsman.mine.nu
 Профиль | | #1
Добавлено: 23.11.07 23:23
в vb.net 2005

Ответить

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 24.11.07 01:25
Dim myclass() as new coolClass

a=myclass(x).переменная * 2

Ответить

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



ICQ: 61452976 

Вопросов: 2
Ответов: 12
 Web-сайт: zaitsman.mine.nu
 Профиль | | #3
Добавлено: 24.11.07 10:12
Error:Arrays cannot be declared with 'New'.

Ответить

Номер ответа: 4
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #4
Добавлено: 24.11.07 10:25
Dim myClassList as new List(Of coolClass) ':)


--
Кодообменник Kbyte.Ru - давай меняться! ;)
http://kbyte.ru/code

Ответить

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



ICQ: 61452976 

Вопросов: 2
Ответов: 12
 Web-сайт: zaitsman.mine.nu
 Профиль | | #5
Добавлено: 24.11.07 10:34
A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll

На такой код:

Public poplist As New List(Of wtid)
Private Sub Form1_Load
 Dim a As Integer
 Dim b As Integer
poplist(1).lluc = 2.345 '<-ОШИБКА в этом месте. lluc описано в классе как decimal
        poplist(13).lluc = 5.432
 a = 1
 b = 13
MsgBox(poplist(a).lluc)
        MsgBox(poplist(b).lluc)


И еще вопрос - можно ли создать массивы, индексом которых будет переменная(в идеале) или хотя бы слово, а не просто цифра.

Ответить

Номер ответа: 6
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #6
Добавлено: 24.11.07 10:47
На такой код:

Это ты мне такой код дал? :) А зачем он мне :))

И еще вопрос - можно ли создать массивы, индексом которых будет переменная(в идеале) или хотя бы слово, а не просто цифра.

Можно:
Dim poplist As New Dictionary(Of String, wtid)
Dim p As New wtid()
p.lluc = 2.345
poplist.Add("Слово", p)
'...
'...
'...
MsgBox(poplist("Слово";).lluc)


--
Форум Kbyte.Ru - давай общаться! ;)
http://kbyte.ru/forum

Ответить

Номер ответа: 7
Автор ответа:
 zaitsman



ICQ: 61452976 

Вопросов: 2
Ответов: 12
 Web-сайт: zaitsman.mine.nu
 Профиль | | #7
Добавлено: 24.11.07 10:50
Код я написал потому, что не понял, че делать после
Dim myClassList as new List(Of coolClass) ':)

Из приведенного листинга я тоже, впрочем ничего не понял. Массивы это было отдельно, а классы отдельно.
мнеб 17 классов типа класс(1) или класс1 чтобы вместо цифры переменную подставить. Как это организовать?

Ответить

Номер ответа: 8
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #8
Добавлено: 24.11.07 11:26
Все же элементарно http://kbyte.ru/code/Show.aspx?id=86, грубо говоря List(Of ) - это и есть массив, и используй его также, как ты бы использовал массивы. А Dictionary(Of String, wtid) - это, грубо говоря, ассоциативный массив (http://ru.wikipedia.org/wiki/%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2). Создавай хоть 100 классов :) Добавляй их в коллекцию методом Add(). См. ссылку которую я дал, там все написано.

Ответить

Номер ответа: 9
Автор ответа:
 zaitsman



ICQ: 61452976 

Вопросов: 2
Ответов: 12
 Web-сайт: zaitsman.mine.nu
 Профиль | | #9
Добавлено: 24.11.07 11:27
По ссылкам пройду, с твоим листингом выше разобрался вроде ;)

Ответить

Номер ответа: 10
Автор ответа:
 zaitsman



ICQ: 61452976 

Вопросов: 2
Ответов: 12
 Web-сайт: zaitsman.mine.nu
 Профиль | | #10
Добавлено: 24.11.07 14:37
Вот еще вопросик - есть 5 текстовых полей (textbox1...textbox5)
Как бы сделать чтото вроде

public winlist as list(of integer, winclass)
....
private sub button_click
for counter=1 to 5
winlist(counter).value=textbox(counter)
counter=counter+1
next

?? то есть динамически менять имя контрола?

Ответить

Номер ответа: 11
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #11
Добавлено: 24.11.07 14:45
Непонятно где и что ты собрался там менять :)
Если хочешь найти контрол textBox1, textBox2 ... textBoxN, то
используй FindControl("ИмяКонтрола";):
For i As Integer = 0 To Me.Controls.Count - 1
If Me.FindControl("textBox" & i.ToString) IsNot Nothing Then
MsgBox("Ну все, ппц пришел, сушите хабы..";)
Next i

Ответить

Номер ответа: 12
Автор ответа:
 zaitsman



ICQ: 61452976 

Вопросов: 2
Ответов: 12
 Web-сайт: zaitsman.mine.nu
 Профиль | | #12
Добавлено: 24.11.07 14:46
ошибку в коде допустил, вот верный ниже, мне нужно чтобы перебором 5 значений пяти классов получали значения пяти текстбоксов

public winlist as list(of integer, winclass)
....
private sub button_click
for counter=1 to 5
winlist(counter).value=textbox(counter).[b]text[/b]
counter=counter+1
next

Ответить

Номер ответа: 13
Автор ответа:
 zaitsman



ICQ: 61452976 

Вопросов: 2
Ответов: 12
 Web-сайт: zaitsman.mine.nu
 Профиль | | #13
Добавлено: 24.11.07 14:47
хм, {b] внутри кода не сработало - это я пытался выделить где была ошибка

Ответить

Страница: 1 |

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



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