[ASP.NET] Array

Pagina: 1
Acties:

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Ik heb gemerkt dat je een array niet meer kan Redimmen in asp.net. Ik zit hierdoor met het volgende probleem. Ik heb 2 functies. Nu weet ik in de ene functie hoe groot de 2d array moet worden, en in de andere functie prop ik er data in.

Hoe kan ik er nou voor zorgen dat de array in de ene functie gedimmed wordt, en dus zijn grootte krijgt, en dat ik in de andere functie deze array toch kan aanroepen, oftewel; hoe zet ik een scope op een array (global private o.i.d.?)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:44

gorgi_19

Kruimeltjes zijn weer op :9

Uit het hoofd:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Public Class clsClass

        Private blaat As New ArrayList()

        Public Sub New()

            blaat.add("ikke1")
            blaat.add("ikke2")

        End Sub

        Public Shared  ReadOnly Property TheArraylist() as Arraylist
            Get
                Return blaat
            End Get
        End Property

        Public ReadOnly Property NumberOfItems() as integer
            Get
                Return blaat.Count
            End Get
        End Property

    End Class


Een stukje pseudo code, maar het geeft wel een idee hoe al je bovenstaande werkt.. :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

CopyTo misschien?

oogjes open, snaveltjes dicht


  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 30-08 17:13

Greyfox

MSX rulez

Je moet inderdaad in de collections namespace kijken.
Daar vind je precies wat je zoekt.
Bovendien is die code geoptimaliseerd en perfomed het beter dan dat jij zelf kan maken.

MSX 2 rulez more


  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
:? Ik begrijp er niet echt veel van, sorry, is er geen makkelijke manier om net zoals in classic ASP een array global te definieren ofzo? En om hem vervolgens dynamisch een grootte te geven? v.b.:

code:
1
2
3
4
5
6
7
8
9
Function AddItemToArray(arrayindex, datatoadd)
  aTestArray(0,arrayindex) = datatoadd
End Function

Function 2
  iCounter = 50
  Dim aTestArray(iCounter , 5)
  AddItemToArray(1, "Test")
End Function

Verwijderd

nee, doe het als gorgi_19

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:44

gorgi_19

Kruimeltjes zijn weer op :9

Ik begrijp er niet echt veel van, sorry, is er geen makkelijke manier om net zoals in classic ASP een array global te definieren ofzo? En om hem vervolgens dynamisch een grootte te geven? v.b.:
Owke, ik zal het nog uitleggen, met uitleg er bij.

Vooraf: imho is het volstrekt nutteloos om een arraylist vooraf qua grootte te definieren. Je kan namelijk een x aantal items toevoegen; wil je er 5 toevoegen, dan hoef je niet vooraf te zeggen dat hij 5 groot is, dat zoekt de zelf wel uit.

Door middel van een blaat.count kan je het aantal items in de arraylist, genoemd blaat opvragen. Let op dat een arraylist begint met 0, dus als je de arraylist wilt doorlopen, doe je dat van 0 tot count - 1

Verder zei je dat je een bepaalde scope wilde hebben. Die heb ik toegevoegd door middel van
code:
1
Public Shared Readonly Property TheArraylist

Public: Kan je de scope zelf van opzoeken.. ;)
Shared: Gedeeld, dus je hoeft niet eerst een New clsClass te gebruiken
Readonly: Alleen uitlezen, niet wegschrijven.
Property: Ook duidelijk

Je kan de arraylist dus opvragen door: clsClass.TheArraylist() te gebruiken

Wat is hier niet duidelijk aan?

Kortom: je hoeft dus niet te redimmen oid!

Als je je probleem in standaard ASP, met uitleg neerzet en een poging in ASP.Net, wil ik wel kijken of ik je kan helpen met omzetten.

Edit:
Ow ja, jouw code omgezet naar ASP.Net is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Public Class clsClass

        Private _aTestArray As New ArrayList()

        Public ReadOnly Property aTestArray() As ArrayList
            Get
                Return _aTestArray
            End Get
        End Property

        Public Sub AddItemToArray(ByVal DataToAdd As String)
            _aTestArray.Add(DataToAdd)
        End Sub

        Public Sub Number2()
            AddItemToArray("Test")
        End Sub

    End Class

Opmerkingen: Jouw functions zijn geen functions, maar sub's (je returnt geen waarde)
Als je atestArray definieert in Function 2, zal Function AddItemToArray daar nooit bijkunnen, omdat deze buiten de scope ligt (zijn mijn code, waar deze 'boven' de functie staat)
Wat in VBScript niet kan, is een datatype definieren (alles is van het type variant). In ASP.Net kan dit wel; een goede eigenschap zou ik dan ook vinden om te kiezen voor early-binding (Dim blaat as Integer) ipv late-binden (Dim blaat)
Moche je per se een nummer willen hebben (1, "test") en (2, "test2") en de volgorde van belang is, kan je ook eens kijken naar een hastable i.p.v. een arraylist.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1