Cet astuce vous permettra de sortir un objet au hasard d'une collection
Prenons par exemple une classe Humain qui a pour code :
Private Class Humain
Public Nom As String
Public Sub New(ByVal NomHumain As String)
Me.Nom = NomHumain
End Sub
End Class
Maintenant vous avez une société donc plusieurs Humain vous décidez donc de faire une collection d'Humain que vous nommez naturellement HumainCollection. Le code ressemble à ca :
Private Class HumainCollection
Inherits CollectionBase
Default ReadOnly Property Item(ByVal index As Int32) As Humain
Get
Return CType(Me.List.Item(index), Humain)
End Get
End Property
Public Function Add(ByVal Humain As Humain) As Humain
Me.List.Add(Humain)
Return Humain
End Function
End Class
j'ai ajouté la possibilité de rajouter des humains, et la propriété item, pour info de faire hériter notre classe faisait que les propriétés Count Clear GetEnumerator et RemoveAt
pour l'instant rien d'extraordinaire, ceux qui ont lu "Au coeur de Visual Basic.net" de Richard Clark (c2i.fr) verrons que je sors pas mes exemples au hasard (mais ca reste un excellent livre que je vous conseil).
Mais imaginons maintenant que vous vouliez prendre un Humain au hasard de votre classe.
pour cela modifions un peu le code de HumainCollection
Private Class HumainCollection
Inherits CollectionBase
Default ReadOnly Property Item(ByVal index As Int32) As Humain
Get
Return CType(Me.List.Item(index), Humain)
End Get
End Property
Public Function Add(ByVal Humain As Humain) As Humain
Me.List.Add(Humain)
Return Humain
End Function
Public Function Randomize() As Humain
If Not Me.Count = 0 Then
Dim Hasard As New Random
Dim i As Integer = Hasard.Next(0, Me.Count)
Return CType(Me.List.Item(i), Photo)
End If
End Function
End Class
j'ai rajouté la function Randomize, celle ci retourne un humain qui bien sur trié au hasard de la collection
Le code de cette function est assez simple donc je ne l'explique pas.
donc maintenant une fois que l'on a notre collection d'humain, pour avoir un humain au hasard il suffit de faire
Dim Societe as new HumainCollection
Societe.Add(new Humain("Cyril"))
Societe.Add(new Humain("Astrid"))
...
Dim UnHumain As Humain = Societe.Randomize
MAJ :
[22.06.2004] Correction : si la collection est vide sa retournait une erreur
Source / Exemple :
Private Class HumainCollection
Inherits CollectionBase
Public Function Randomize() As Humain
If Not Me.Count = 0 Then
Dim Hasard As New Random
Dim i As Integer = Hasard.Next(0, Me.Count)
Return CType(Me.List.Item(i), Photo)
End If
End Function
End Class
Conclusion :
J'attend vos commentaires
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.