Array dinamici VB.NET

di dna_programmer il
14 risposte
Salve a tutti una volta dichiarato un array dinamico nel seguente modo

public v() as integer

come si fa per deallocarlo?

14 Risposte

  • Ciao dna_programmer,
    non devi fare nulla, la deallocazione degli oggetti in .NetFramework è automatica, ci pensa il garbage collector.
    Quando nessuna variabile punta più all' oggetto il garbage collector può deallocarlo.

    Una variabile smette di puntare all' oggetto quando esce dallo scope, quando le viene assegnato un altro oggetto, quando viene messa a Nothing. Quando non vi è più nessun riferimento all' oggetto non è detto che venga deallocato immediatamente è l' algoritmo del garbage collector che decide il momento migliore.

    Se proprio proprio vuoi puoi forzare il garbage collector puoi farlo con System.GC.Collect(), ma non è una buona idea, vai a rompre le scatole ad un processo delicato e rischi di compromettere le prestazioni del sistema.

    P.S. facendo public v() as integer non hai allocato nulla, hai fatto solo una dichiarazione e v vale Nothing, puoi scrivere scrivere ad esempio:
    
    Public v As Integer() = New Integer(10) {}
    
  • Ok grazie , io però non vorrei allocarli tutti e n(es.10) nello stesso momento, ma vorrei fare un ciclo e alla fine del ciclo crea un "pezzo di array";
    esempio:
    all'inizio del ciclo l'array ha zero caselle, poi alla fine ne crea una poi ricomincia il ciclo e ne mette 2 e cosi via.
    E' possibile questo?
  • Usa gli array dinamici, aumentano la loro dimensione man mano che aggiungi oggetti, ce ne sono di vari tipi.
  • Scusami ho un pò di confusione.

    perchè questo non è un array dinamico:

    public v() as integer

    E poi come faccio per farlo aumentare di dimensione ogni volta che aggiungo oggetti?
  • Sorry ,in effetti con array dinamico si intende quello che dici tu e ridimensioni col Redim Preserve, praticamente non li ho mai usati. Mi riferivo alle classi ArrayList e List(Of), ad esempio:
    
            Dim frutti As ArrayList = New ArrayList()
            frutti.Add("pera")
            frutti.Add("mela")
            frutti.Add("banana")
    
    oppure
    
            Dim i As Integer
            Dim numeri As List(Of Integer) = New List(Of Integer)
            For i = 1 To 1000
                numeri.Add(i)
            Next
    
  • Quindi in pratica da quello che ho capito quello che ho detto io sono i vettori dinamici, mentre quelli che hai detto tu sono le "famose" liste dinamiche del c , quelle con i puntatori ecc. É cosi?
  • Ciao dna_programmer,
    assolutamente no. Nel .NetFramework non si usano i puntatori (perlomeno non in maniera esplicita e tranne in C# quando compili in maniera unsafe), sono delle classi che incapsulano il concetto di contenitore, se proprio vuoi fare un paragone (un po tirato) pensa alle classi contenitore della libreria STL del C++. Hai a disposizione Vettori, Code, Liste, Stack, Hash Tables, Dizionari ecc. ecc. ecc.

    In pratica ti sarai reso conto che il .NetFramework è una sterminata libreria di classi dove trovi di tutto. Queste classi array sono una parte di questa libreria.
  • A ok quindi diciamo che si ispirano alle liste del c però senza puntatori perchè vengono gestiti automaticamente giusto?
  • Giusto, però non fare il paragone col C, semmai col C++ o Java, cioe linguaggi ad oggetti da cui il .NetFramework prende molto.
  • Quindi in poche parole sono delle liste ad "alto livello" se cosi' le vogliamo definire
  • Giusto, se poi invece che lista (che ricorda quelle brutte cose del C con i nodi e i puntatori) li chiami 'contenitori' meglio ancora.
  • A ok ok. un'atra cosa, se non ti rompo troppo, che differenza c'è tra ArrayList e List(Of) ?
  • Discorso difficilda spiegare in poche righe, ArrayList è un contenitore di oggetti generico, non verifica il tipo degli oggetti che inserisci, List Of invece è basato sui 'Generics' per cui hai il controllo sul tipo. Mi rendo conto che la spiegazione non è proprio chiara spero che basti come spunto.

    Per qualche esempio su ArrayList puoi guardare qui

    Per qualche esempio d' uso di list of puoi guardare qui
  • Grazie l'ho letto ,molto interessante.Grazie ancora
Devi accedere o registrarti per scrivere nel forum
14 risposte