Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - array di oggetti
Forum - C# / VB.NET - array di oggetti

Avatar
albertogil (Normal User)
Newbie


Messaggi: 11
Iscritto: 29/12/2010

Segnala al moderatore
Postato alle 0:25
Sabato, 12/02/2011
ciao , potete aiutarmi? non ho capito svariate cose sugli array, per esempio
ho creato nel modulo un array di oggetti di tipo PompaBenzina
ma non  crea + di una istanza . Quando creo la seconda pompa di benzina appare l'errore:
index out of range exception ! sono andato fouri dal range del vettore, ma non mi sembra visto che i=1 quando si verifica l'errore , impostando g= 2 o più.
Codice sorgente - presumibilmente VB.NET

  1. '-----------modulo
  2. public g as integer
  3. public i =0
  4. public vet(g) as PompaBenzina  ' classe PompaBenzina
  5. '-------------------------------------------------------
  6. ' bottone crea
  7.  Private Sub crea_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles crea.Click
  8.         If i < g Then
  9.             MsgBox("i vale " & i)
  10.             array(i) = New PompaBenzina
  11.             array(i).tipo() = txttipo.Text
  12.             array(i).prezzo() = txtprezzo.Text
  13.         Else : MsgBox("non puoi creare altre pompe di benzina!!", MsgBoxStyle.Critical)
  14.             Exit Sub
  15.         End If
  16.         txtprezzo.Text = ""
  17.         txttipo.Text = ""
  18.         i = i + 1
  19.     End Sub
  20. '---------------------------------------
  21. ' form load
  22. Private Sub Pompa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  23.  
  24.         g = InputBox("Quante pompe di benzina vuoi creare?")
  25.  
  26.     End Sub


Ultima modifica effettuata da albertogil il 12/02/2011 alle 11:33


rino gaetano
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
2
Down
V
Segnala al moderatore
Postato alle 10:13
Sabato, 12/02/2011
L'errore è molto semplice. Tu hai fatto una dichiarazione con inizializzazione del vettore. Infatti non hai semplicemente specificato che vet debba essere di tipo PompaBenzina() (ossia array di quel tipo di oggetti), ma gli hai anche dato una dimensione, vale a dire i. Le variabili in testa al modulo vengono allocate in memoria nella parte di dati globali, perciò sono le prime variabili ad essere allocate e/o inizializzate. In particolare, poiché al momento della sua inizializzazione i vale 0, stai creando var(0), ossia un array di 1 elemento.

Questo non è php o javascript, dove puoi assegnare un nuovo indice in qualsiasi momento. Se vuoi aumentare la dimensione dell'array devi creare un nuovo array di dimensioni maggiori o in alternativa usare una lista.

grazie della risposta. cmq ho sbagliato a scrivere ho scritto vet(i) invece che vet(g) ma è la stessa cosa, da quello che dici. Non esiste un modo per impostare le dimensioni del vettore inserendo un valore da tastiera? - albertogil - 12/02/11 12:44


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM