Richiesta spiegazione classi
-
venerdì 25 maggio 2012 14:11
Salve a tutti.
Siccome è da oltre un anno che ho abbandonato VB.Net, mi sono trovato oggi a dover scrivere una classe per un progettino semplice, solo che non mi ricordo più come fuzionano
Allora ho creato un modulo classe così impostato:
Animazione.vb
codice:Public Class Animazione Dim Nome As String Dim n_frame As Integer 'Altre variabili. Public Sub New() 'Imposta le proprietà iniziali. Nome = "" n_frame = 0 End Sub Public Sub New(ByVal nomex As String, ByVal n_framex As Integer) 'Imposta le proprietà iniziali. Nome = nomex n_frame = n_framex End Sub Public Property NomeAnimazione() As String Get Return Nome End Get Set(ByVal Value As String) Nome = Value End Set End Property Public Property Num_frame() As Integer Get Return n_frame End Get Set(ByVal Value As Integer) n_frame = Value End Set End Property End Class
Poi nel codice del form principale ho inizializzato la mia classe così:
codice:Dim Anim As New Animazione
sempre nel mio form devo adesso riempire la classe ma non mi ricordo come si fa, io ricordavo qualcosa simile a:
codice:Anim(dato1, dato2)
ma non è così

in pratica se inizializzo la mia classe così:
Anim.NomeAnimazione = "ciao"
Anim.Num_frame = 1
Anim.NomeAnimazione = "addio"
Anim.Num_frame = 2
quando stampo con il ciclo for each:
For Each v As String In Anim.NomeAnimazione
Console.Write(v)
Next v
mi stampa
ad
d
i
o
invece di:
ciao
addioqualcuno potrebbe scrivermi il codice corretto? grazie
Tutte le risposte
-
venerdì 25 maggio 2012 14:26
La proprietà NomeAnimazione deve essere una collection di valori, as esempio List(Of String), in questo modo puoi aggiungerli attraverso il metodo List.Add.
Stessa cosa per l'altra proprietà, volendone avere una sola potresti utilizzare un Dictionary(Of Integer, String).
Il ciclo ha scritto la stringa "addio" in quel modo perchè la stringa è una collection di char, quindi ha enumerato i singoli caratteri.Matteo Migliore
Bloghttp://blogs.ugidotnet.org/matteomigliore
Twitterhttp://twitter.com/matteomigliore
CodePlex- Proposto come risposta Irina TurcuMicrosoft Contingent Staff, Owner giovedì 31 maggio 2012 10:33
-
venerdì 25 maggio 2012 14:34
potresti spiegarmelo in termini di codice ...
magari con un piccolo esempio.
Grazie ^_^
-
venerdì 25 maggio 2012 14:47
Ad esempio, se vuoi tenere una lista di animazioni sui cui ciclare successivamente
Public Class Animations Private ReadOnly animationDictionary As IDictionary(Of Integer, String) = New Dictionary(Of Integer, String)() Public ReadOnly Property All() As IEnumerable(Of KeyValuePair(Of Integer, String)) Get Return animationDictionary End Get End Property Public Sub Add(frame As Integer, name As String) animationDictionary.Add(frame, name) End Sub End Class Dim animations = New Animations() animations.Add(1, "Blur") animations.Add(2, "Erode")
Matteo Migliore
Bloghttp://blogs.ugidotnet.org/matteomigliore
Twitterhttp://twitter.com/matteomigliore
CodePlex -
venerdì 25 maggio 2012 15:43
Allora, intanto grazie per l'aiuto.
Purtroppo il codice di classe mi genera errori (uso VB.NET 20120 EE)
Private ReadOnly animationDictionary As IDictionary(Of Integer, String) = New Dictionary(Of Integer, String)()
nella parte in neretto (Integer, String) mi segna:
System.Collection.IDictionary non ha parametri di tipo, quindi non puo avere argomenti di tipo.
e poi in KeyValuePair(Of Integer, String)
mi dice: Tipo KeyValuePair non definito.
comunque ti dico quello che mi serve così semplifico il tutto:
Quello che mi interessa alla fine è semplicemente avere una lista tipo questa:
Nome_Anim, x, y, h, w ecc ecc
(esattamente ancora non so quanti sono gli elementi e se sono string o integer)
e poi semplicemente cercare un animazione specifica e tirarne fuori i dati, ed eventualmente cancellarla.
Non mi serve usare un Db, non sono dati permanenti.
Se mi puoi aiutare, mi faresti un GRAN favore.
Grazie -
venerdì 25 maggio 2012 21:25Devi importare attraverso la keyword Imports il namespace System.Collection.Generics http://msdn.microsoft.com/en-us/library/xfhwa508.
Consiglio anche a te un libro su cui studiare:
http://social.msdn.microsoft.com/Forums/it-IT/visualbasicit/thread/3746b93e-cd36-4f60-a5fc-01a07e8506a2
http://social.msdn.microsoft.com/Forums/it-IT/visualbasicit/thread/02640294-8573-49f3-98c3-365b427170c4Matteo Migliore
Bloghttp://blogs.ugidotnet.org/matteomigliore
Twitterhttp://twitter.com/matteomigliore
CodePlex

