30/08/10 5:16
Marcus65
Salve sono nuovo del forum e anche di VB.NET che sto studiando (purtroppo nei ritagli di tempo) sull’ottima guida di Totem. Chiedo scusa in anticipo per la prolissità ma ho 2 problemi che non riesco proprio a risolvere. Se qualcuno volesse darmi una mano….
Sono alle prese con gli hastable e i metodi factory. Ho creato programmino che calcola il peso di alcuni cubi. C’è una classe cube con 3 campi private (e relative property) : Spigolo, Densità e l’hastable Cubes (Shared oltre che private). Dal main vengono creati alcuni oggetti A, B, C ecc. di tipo cube, inizializzati attraverso un metodo factory. La mia prima domanda è la seguente:
1) Perché il costruttore (richiamato dal metodo factory) va scritto
Private Sub New(ByVal Spig As Single, ByVal Ps As Single)
Me._Spig = Spig
Me._Ps = Ps
_cubes.Add(Spig, Me)
End Sub
'Non sarebbe sufficiente scrivere (eliminando il riferimento alla classe stessa “Me” ) ?
Private Sub New(ByVal Sp As Single, ByVal Ps As Single)
Spig = Sp
Ps = Ps
cubes.Add(Spig, Ps)
End Sub
La seconda domanda è la seguente:
2) Se voglio visualizzare tutto l’hashtable cioè tutti i cubi dalla main, scrivo questo codice e funziona
For Each X As DictionaryEntry In cube.cubes
Dim Y As cube = X.Value
Console.WriteLine(Y.Spig)
Console.WriteLine(Y.Ps)
Console.WriteLine()
Next
Ma se voglio visualizzare un cubo solo richiamandolo per chiave (spigolo) non so come fare. Per es per visualizzare il cubo di spigolo 1 ho provato con
Dim H As Hashtable = cube.cubes
Console.WriteLine(H(1.0))
Cioè dichiarando un hashtable inizializzandolo col nostro hashtable e andando a visualizzare l’elento richiesto. Ma che c’è che non va ?
Oppure con
Dim Y As cube = cube.cubes(3.0)
Console.WriteLine("Cubo A: " & Y.Ps)
D’altronde si tratta di un hashtable shared di oggetti cube. Quindi dichiaro l’oggetto Y, lo inzializzo con l’elemento dell’hashtable desiderato e poi vado a visualizzarlo. Perché non deve funzionare ?
Sono alle prese con gli hastable e i metodi factory. Ho creato programmino che calcola il peso di alcuni cubi. C’è una classe cube con 3 campi private (e relative property) : Spigolo, Densità e l’hastable Cubes (Shared oltre che private). Dal main vengono creati alcuni oggetti A, B, C ecc. di tipo cube, inizializzati attraverso un metodo factory. La mia prima domanda è la seguente:
1) Perché il costruttore (richiamato dal metodo factory) va scritto
Private Sub New(ByVal Spig As Single, ByVal Ps As Single)
Me._Spig = Spig
Me._Ps = Ps
_cubes.Add(Spig, Me)
End Sub
'Non sarebbe sufficiente scrivere (eliminando il riferimento alla classe stessa “Me” ) ?
Private Sub New(ByVal Sp As Single, ByVal Ps As Single)
Spig = Sp
Ps = Ps
cubes.Add(Spig, Ps)
End Sub
La seconda domanda è la seguente:
2) Se voglio visualizzare tutto l’hashtable cioè tutti i cubi dalla main, scrivo questo codice e funziona
For Each X As DictionaryEntry In cube.cubes
Dim Y As cube = X.Value
Console.WriteLine(Y.Spig)
Console.WriteLine(Y.Ps)
Console.WriteLine()
Next
Ma se voglio visualizzare un cubo solo richiamandolo per chiave (spigolo) non so come fare. Per es per visualizzare il cubo di spigolo 1 ho provato con
Dim H As Hashtable = cube.cubes
Console.WriteLine(H(1.0))
Cioè dichiarando un hashtable inizializzandolo col nostro hashtable e andando a visualizzare l’elento richiesto. Ma che c’è che non va ?
Oppure con
Dim Y As cube = cube.cubes(3.0)
Console.WriteLine("Cubo A: " & Y.Ps)
D’altronde si tratta di un hashtable shared di oggetti cube. Quindi dichiaro l’oggetto Y, lo inzializzo con l’elemento dell’hashtable desiderato e poi vado a visualizzarlo. Perché non deve funzionare ?
Ultima modifica effettuata da Il Totem 30/08/10 8:55
aaa