begin process at 2008 09 06 20:03:20
1 237 931 membres
313 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

OBJET AU HASARD D'UNE COLLECTION


Information sur la source

Catégorie :Divers Source .NET ( DotNet ) Classé sous : randomize, collection, hasard Niveau : Débutant Date de création : 22/06/2004 Date de mise à jour : 22/06/2004 23:29:08 Vu : 5 502

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

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

  • 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
    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
  • signaler à un administrateur
    Commentaire de ABF le 30/05/2007 12:04:53

    Elle est ou la collection ?

  • signaler à un administrateur
    Commentaire de Renfield le 30/05/2007 12:28:01 administrateur CS

    voir section "source" ci dessus...

    faut lire, avant de noter a tout va

  • signaler à un administrateur
    Commentaire de simoneo le 02/08/2007 12:53:28

    Bon code.

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS