Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] Array di classi

Scusate se di questo argomento se ne è già parlato abbondantemente ma ho
cercato sul NG e con Google e non ho ancora risolto...
Mi ha incuriositò la discussione di qualche giorno fa a proposito di una
classe per disegnare un istogramma. Allora ho scritto la mia classe
Istogramma, che contiene le varia caratteristiche dell'istogramma e delle
"colonne" che lo compongono:
Public class Istogramma
public Colonne(10) as colonna
Public LarghezzaColonna as integer
public ColoreBordo as system.drawing.color
public Sub DisegnaGrafico()
...
...
End sub
End Class
Public Class Colonna
public Valore as integer
public colore as as system.drawing.color
public Etichetta as string
end class
Ora nel form_load istanzio la classe istogramma e assegno le varie
proprietà:
dim ISTO as new Istogramma
colonne(1).value = 40
colonne(2).value = 80
Qui accade quello che non riesco a capire: a tutti i membri dell'array
colonne() viene assegnato l'ultimo valore immesso (quindi nell'esempio
colonne(1).value diventa = 80. 
Mi sapete spiegare il perchè?
Grazie mille
Fil
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Mi sapete spiegare il perchè?
Non hai incluso il codice con cui crei le istanze di oggetti Colonna che
rappresentano gli 11 elementi del tuo array (gli array sono a base 0), ma da
come descrivi il problema, e' molto probabile che tu abbia fatto puntare
tutti ad un unica istanza invece che a 11 distinte.
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 tutti ad un unica istanza invece che a 11 distinte.
Anche secondo me.
Deve usare = New Colonna per ogni elemento dell'array
Ciao

 tutti ad un unica istanza invece che a 11 distinte.
Probabilmente è qui che sbaglio. Infatti ho cominciato da poco col .NET e
con le classi non ci avevo mai "pistolato" !!
Potresti spiegarmelo?
Grazie ancora 


 Anche secondo me.

Ah, questo l'avevo fatto:
for i as integer = 0 to 10
colonne(i) = new colonna
next
Ho provato a mettere questo ciclo sia nella sub NEW() della classe
Istogramma che in un'altra sub richiamata appositamente. Purtroppo però il
risultato finale non cambia.


 
Io non capisco questo che dici essere nel form_load
dim ISTO as new Istogramma
colonne(1).value = 40
colonne(2).value = 80
Ma se colonne sono membri di ISTO, come fai ad accederci così?
Ciao

 Fil ha scritto:




Chiedo venia, naturalmente scrivo ISTO.colonne(1).value = 40


 
Secondo me non funziona l'assegnazione delle nuove colonne.
Comunque, prova a fare cosě, le colonne anzichč come array dichiarale 
come ArrayList, e poi le aggiungerai con:
ISTO.Colonne.Add(new Colonna)
Ciao

 ISTO.Colonne.Add(new Colonna)
Grazie del consiglio, proverň questa soluzione anche se mi sembra strano
che non si possa utilizzare un semplice array.
Grazie ancora
Ciao Fil


 che non si possa utilizzare un semplice array.
Si puň sě, ma evidentemente sbagli qualcosa e non si capisce cosa.
Inoltre per un istogramma mi pare piů logico che il numero di colonne 
sia variabile.
Ciao

 sia variabile.
Certo, ma volevo cominciare con un numero fisso, tanto per risolvere i
problemi con le classi.
Ciao



 Si ma il codice lo devi postare tutto e come si deve sennò come facciamo ad
aiutarti!?
Ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 segnala le variabili associate a colonne(value, colore, etichetta)
Certo, perchč l'ArrayList non č tipizzato.
Devi fare
Dim c As Colonna
c = DirectCast(ISTO.Colonne(i), Colonna)
c.Colore = ...
Ciao

 Devi fare

Fantastico, grazie mille Zanna.
Ciao!!!


 
Ovviamente la soluzione migliore è farsi una propria collection tipizzata.
Ciao

 che non si possa utilizzare un semplice array.
Infatti si puo', e il codice che hai postato la seconda volta con il ciclo
di inizializzazione dell'array era corretto: ho provato copiando e
incollando il codice dei tuoi due messaggi e funziona regolarmente come
previsto.
Evidentemente il problema e' altrove... la soluzione dell'ArrayList te lo ha
fatto aggirare ma ti assicuro che doveva funzionare anche l'array semplice.
