Archief - Grote hoeveelheid classes instantiëren in VB.net

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Tristan

Legacy Member
Hey hey,

Mijn eerste vraagje op dit subforum :)
In een opdracht voor school, moet ik een aantal klasse instantiëren, van het type clsX
Als ik dit 2x wil doen, kan ik eenvoudig schrijven:
Code:
Private _oX1 as new clsX
Private _oX2 as new clsX

Als ik dit nu, bijvoorbeeld, 2000 keer wil doen, kan ik dat wel 2000x typen, maar er is hier vast een elegantere methode voor...
Ik dacht aan iets in de trend van:
Code:
  Dim i As Integer
        For i = 1 To 6
            _oX & i  = New clsX(i)
        Next
(Ik initialiseer de _oX natuurlijk wel 6x, maar dat staat niet in mn subroutine)

Bovenstaande code lukt natuurlijk niet, de ampersand is dan ook een string operator. Iemand die me kan helpen?

NeverwinterX

Legacy Member
Tristan zei:
Hey hey,

Mijn eerste vraagje op dit subforum :)
In een opdracht voor school, moet ik een aantal klasse instantiëren, van het type clsX
Als ik dit 2x wil doen, kan ik eenvoudig schrijven:
Code:
Private _oX1 as new clsX
Private _oX2 as new clsX

Als ik dit nu, bijvoorbeeld, 2000 keer wil doen, kan ik dat wel 2000x typen, maar er is hier vast een elegantere methode voor...
Ik dacht aan iets in de trend van:
Code:
  Dim i As Integer
        For i = 1 To 6
            _oX & i  = New clsX(i)
        Next
(Ik initialiseer de _oX natuurlijk wel 6x, maar dat staat niet in mn subroutine)

Bovenstaande code lukt natuurlijk niet, de ampersand is dan ook een string operator. Iemand die me kan helpen?

Beetje een klassieke beginnersfout. Stel dat die manier zou werken, wat zou je er dan mee doen? Dan zit je met 2000 afzonderlijke variabelen. Als je daar iets mee wilt doen, ga je die dan elk weer aanspreken?
Je moet je realiseren dat het niet nuttig is om 2000 afzonderlijke variabelen te hebben in je code. De truc is om die 2000 objecten in een of andere datastructuur/collectie te steken. Mijn VB is behoorlijk roestig dus mogelijk zitten hier wat syntax foutjes in:
Code:
Dim arrayList As New ArrayList()
Dim i As Integer
For i = 1 To 6
   arrayList.Add(New clsX(i))
Next

'Daarna kan je over die datastructuur/collectie loopen om op al die objecten
'daarin (of een deel) een actie uit te voeren en dergelijke dingen.

For Each clsxi In arrayList 
   ' doe iets met clsxi 
Next clsxi

Tristan

Legacy Member
Kheb een ArrayList gebruikt, simpelweg omdat ik met verschillende klasses zat (die allemaal overerven van één superklasse).
Anyway, bedankt voor de replies :)

Tristan

Legacy Member
Krueger zei:
Waarom gebruik je dan geen List van die superklasse?

Goeie vraag... Als ik een een List maak van mn superklasse, kan ik dan nog steeds het volgende doen?
_oList.add(New clsSubKlasse1(iX, sY, rZ)
_oList.add(New clsSubKlasse2(iX, sY, sZ, ...)

Begrijp je wat ik bedoel?

Krueger

Legacy Member
In c# zou dat geen probleem zijn, dus ik veronderstel in VB ook niet.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan