Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3087 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [Résolu] [VB.Net] Accès variable de type Generic.List(Of ...) dans

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] [VB.Net] Accès variable de type Generic.List(Of ...) dans

n°1418244
007seb
Posté le 02-08-2006 à 15:29:56  profilanswer
 

Bonjour,
 
Je continue mon auto-formation au .Net et je rencontre une difficulté.
J'ai créé cette classe au sein de mon projet.
Il s'agit d'une classe "Partie" qui contient une variable privée "Joueurs" de type Generic.List(Of Joueur)
 
J'ai créé une Property Joueurs pour pouvoir accéder à cette variable depuis une instance de "Partie" afin de pouvoir écrire ce genre de code dans le code de ma Form :
 
Dim laPartie as New Partie()
Dim monJoueur as New Joueur()
et
laPartie.Joueurs.add(monJoueur)
 
Pourquoi le code dans le "Set" de ma propriété Joueurs ne s'exécute pas ?
 
Voici le code de ma classe "Partie"
 
Public Class Partie
    Private _phase As Integer
    Private _pot As Integer
    Private _numPartie As String
    Private _joueurs As New System.Collections.Generic.List(Of Joueur)
    Private _coups As New System.Collections.Generic.List(Of Coup)
    Private Shared _nbCoups As Integer
 
    Public Property NumPartie() As String
        Get
            Return _numPartie
        End Get
        Set(ByVal Value As String)
            _numPartie = Value
        End Set
    End Property
 
    Public Property PhaseEncours() As Integer
        Get
            Return _phase
        End Get
        Set(ByVal Value As Integer)
            _phase = Value
        End Set
    End Property
 
    Public Shared ReadOnly Property NbCoups() As Integer
        Get
            Return _nbCoups
        End Get
    End Property
 
    Public Property Joueurs() As System.Collections.Generic.List(Of Joueur)
        Get
            Return _joueurs
        End Get
        Set(ByVal Value As System.Collections.Generic.List(Of Joueur))
            MsgBox("je suis dans le Set de la property joueurs() dans la classe partie" )          ' <----- Ne s'affiche jamais... pourquoi ?
            _joueurs = Value
        End Set
    End Property
 
    Public ReadOnly Property Joueurs(ByVal nomJoueur As String) As Joueur
        Get
            Dim _joueurTemp As Joueur = Nothing
 
            For Each joueur As Joueur In _joueurs
                If joueur.nomJoueur = nomJoueur Then _joueurTemp = joueur
            Next
            Return _joueurTemp
        End Get
    End Property
 
    Public Property Coups() As System.Collections.Generic.List(Of Coup)
        Get
            Return _coups
        End Get
        Set(ByVal Value As System.Collections.Generic.List(Of Coup))
            MsgBox("dans le Set de property coups de partie.class" )                 '<------- Ne s'affiche jamais ? Pourquoi ? (idem ici)
            _nbCoups += 1
            _coups = Value
        End Set
    End Property
 
    Public Property Pot() As Integer
        Get
            Return _pot
        End Get
        Set(ByVal Value As Integer)
            _pot = Value
        End Set
    End Property
 
    Sub New()
        _numPartie = ""
        _phase = 1
        _pot = 0
        _coups.Clear()
        _nbcoups = 0
        _joueurs.Clear()
    End Sub
 
End Class
 
 
Merci d'éclairer ma lanterne :)


Message édité par 007seb le 03-08-2006 à 18:52:13
mood
Publicité
Posté le 02-08-2006 à 15:29:56  profilanswer
 

n°1418614
007seb
Posté le 02-08-2006 à 23:06:05  profilanswer
 

:bounce:  
 
A votre bon coeur Messieurs Dames   :hello:

n°1418684
007seb
Posté le 03-08-2006 à 02:33:56  profilanswer
 

Bon, ok, personne ne sait/veut répondre (mais je suis coutumier du fait, et je remets en question ma façon d'exposer le problème).
 
J'ai une variable _joueurs de type Generic.List(Of Joueur)
 
Joueur étant une classe toute bête avec une propriété nomJoueur as string et une propriété montantJoueur as integer
 
Comment puis-je arriver à faire :
 
msgbox ( _joueurs("toto" ).montantJoueur )
 
???
 
Je ne sais pas si je dois surcharger la classe Generic.List ou créer une classe qui en hérite (genre ListJoueur) et lui ajouter une fonction TrouveJoueur ? Une autre suggestion peut-être ?


Message édité par 007seb le 03-08-2006 à 02:36:11
n°1418740
_Mose_
Lonesome coder
Posté le 03-08-2006 à 10:12:40  profilanswer
 

Dsl, mais
- VB.Net : moi pas comprendre
- .Net 2 : moi pas pratiquer
et je pense qu'on est pas mal dans ces cas sur ce forum, donc soit patient...
 
Une question : je comprends pas l'intérêt d'une liste generic dans ton cas...

n°1419135
007seb
Posté le 03-08-2006 à 18:51:51  profilanswer
 

Merci _Mose_ pour ton intervention... j'ai toujours l'impression d'être le seul à qui on ne répond pas :)
 
Ta dernière phrase m'intéresse, j'avoue ne pas m'être posé trop longtemps la question quand j'ai vu que les Generic.List servaient à stocker des variables qui ont toutes le même type (à l'inverse des arraylists si je ne m'abuse).
 
Quoi qu'il en soit, j'ai trouvé ma solution ici pour ceux que ça intéresserait :
 
http://www.codeguru.com/vb/gen/vb_ [...] php/c6079/
 
Il s'agissait pour moi de pouvoir modifier la propriété par défaut "Item" afin d'entrer un index sous forme d'une Chaine et non d'un Integer, indice de la List.
 
Ce qui se conçoit bien s'énonce clairement dit le proverbe... j'ai l'impression d'avoir un peu de mal avec ma conception du problème et par conséquent, avec sa description !  
 
Encore merci à toi, et si tu pouvais m'en dire plus sur ta remarque, je suis preneur !
 
A+

n°1419156
_Mose_
Lonesome coder
Posté le 03-08-2006 à 19:26:51  profilanswer
 

007seb a écrit :

Merci _Mose_ pour ton intervention... j'ai toujours l'impression d'être le seul à qui on ne répond pas :)

Lol, bah forcément : VB + .Net 2   c'est pas le plus courant (pour l'instant ?) :)

007seb a écrit :

Ta dernière phrase m'intéresse, j'avoue ne pas m'être posé trop longtemps la question quand j'ai vu que les Generic.List servaient à stocker des variables qui ont toutes le même type (à l'inverse des arraylists si je ne m'abuse).

Oui et non. Disons qu'une ArrayList stocke des variables qui ont toutes le même type : Object.
Après... faut faire du cast.

007seb a écrit :

Il s'agissait pour moi de pouvoir modifier la propriété par défaut "Item" afin d'entrer un index sous forme d'une Chaine et non d'un Integer, indice de la List.

Je ne comprend pas très bien les tenants et les aboutissants de ton code, mais dans une Hashtable, tu peux te servir de n'importe quel objet comme indice pour stocker une donnée. Donc pourquoi pas une chaine de caractère :

Code :
  1. MyClass myobject = new ...
  2. // ajouter une valeur
  3. myhashtable.Add("un", myobject); // équivalent à myhashtable["un"] = myobject;
  4. // lire une valeur
  5. if(myhashtable.Contains("un" ))
  6.   myobject = (MyClass)myhashtable["un"];

Après, si tu veux éviter de faire un cast à chaque fois que tu vas lire ta valeur, tu peux implémenter ta propre Hashtable et surcharger l'opérateur public object this[object key] comme ceci : public new MyClass this[object key].
L'opérateur new te permettant de changer la signature de la propriété pour qu'elle retourne un 'MyClass' au lieu d'un 'Object'.

n°1419237
007seb
Posté le 03-08-2006 à 22:09:32  profilanswer
 

Ok, ça confirme donc ce que je pensais.
J'ai fait exactement la même chose avec le Generic.List, surcharger le Item(indice As Integer) par Item(nomJoueur As String) et ça marche bien, et le code me semble propre, je laisse donc comme ça. Niveau performances du code, vu le peu de données à traiter, je me satisfait très bien de cela.
 
Merci encore et A++

n°1478765
renocmoa
Posté le 20-11-2006 à 19:23:23  profilanswer
 

Bonsoir,
 
J'ai le même probléme que toi seb 007, tu as trouvé une solution ?
 
Merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [Résolu] [VB.Net] Accès variable de type Generic.List(Of ...) dans

 

Sujets relatifs
[Résolu]Récupérer le nom d'un fichier à uploaderDouble ouverture de pop up [résolu]
[RESOLU][java] transformer un champ String en dateEn VBA comment changer la valeur input de type hidden d'un formulaire
[C#.Net] Traduction C# -> VB.Net (2 lignes)[RESOLU] Eclipse, Jar exécutable, encore et encore...
Librairie Mcal [Résolu][c][résolu] SDL et API Windows
[Résolu] [C#] Mettre à jour une List à partir d'une autre 
Plus de sujets relatifs à : [Résolu] [VB.Net] Accès variable de type Generic.List(Of ...) dans


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR