IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Comment accéder à une propriété d'une classe enfant dont la propriété ne fait pas partie de l'héritage ?
    Bonjour à tous je me demande comment accéder à la propriété (get ; set) d'une classe enfant en polymorphisme. Voilà j'explique ... Je suis entrain de faire un petit jeu sur monogame en c#. J'ai la classe GameObject qui à ses propriétés et une classe bouclier qui possède toute les propriétés de la classe GameObject sauf une qui est l'énergie du bouclier. Donc dans mon main j'ai un GameObject bouclier qui est également un bouclier puisque
    bouclier = new Bouclier();. Mais au niveau de mon affichage j'aimerais pouvoir afficher la quantité d'énergie restante du dit bouclier. Mais je ne peux pas utiliser bouclier.Energie puisqu'il n'est pas accessible. Dans ma classe le champs energie est private et l'accesseur public. Je me demande donc comment y accéder à partir du main ??

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (lavariable is Bouclier) // test du type
    {
      var energie = ((Bouclier)lavariable).Energie; // cast explicite
      //
    }
    il y a des patterns plus efficaces pour faire du spécifique sans le savoir, mais bon ce code est simple et reste propre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Question performance, "as" n'est-il pas plus performant que le cast ?

    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (lavariable is Bouclier) // test du type
    {
      var energie = (lavariable as Bouclier).Energie; // pas de création d'un nouveau handle
      //
    }
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Question performance, "as" n'est-il pas plus performant que le cast ?

    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (lavariable is Bouclier) // test du type
    {
      var energie = (lavariable as Bouclier).Energie; // pas de création d'un nouveau handle
      //
    }
    Le "as" est moins performant puisqu'il refait implicitement un "is".

    Dans les docs Microsoft, ils conseillent de faire comme ceci puisque le "as" ne va affecter la variable que si le "is" renvoie true :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var bouclier = (lavariariable as bouclier);
    if (bouclier != null)
    {
         var energie = bouclier.Energie;
    }

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Dans ce cas... Ceci ?

    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    var energie = (lavariable as Bouclier)?.Energie;
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Sur le principe, oui.

    Même si personnellement, je ne suis pas fan de cette syntaxe car l’œil peut facilement manquer le point d'interrogation.

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Ça c'est ce qu'il se passe quand on lit trop vite sans se poser de question
    On ne jouit bien que de ce qu’on partage.

  8. #8
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Ça c'est ce qu'il se passe quand on lit trop vite sans se poser de question
    Ça arrive a tout le monde ne t'en fais pas

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Il y aussi :
    - des gens pour lesquels cette syntaxe ne sera pas parlante,
    - des gens qui vont l'utiliser là où ce n'est pas utile, juste pour éviter de se poser la question
    - des gens qui vont abuser de cette syntaxe au point que ça devienne illisible

    Voici le genre de chose que j'ai déjà vu dans du code (et encore je l'ai simplifié)
    Qu'est-ce qui te parait le plus compréhensible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    string tutu;
    if (A > 0)
    {
        if (B > 0) { tutu = "A +, B +";} 
        else if (B < 0) { tutu = "A +, B -"; }
        else { tutu = "A +, B Z"; }
    }
    else if (A < 0)
    {
        if (B > 0) { tutu = "A -, B +"; }
        else if (B < 0) { tutu = "A -, B -"; }
        else { tutu = "A -, B Z"; }
    }
    else
    {
        if (B > 0) { tutu = "A Z, B +"; }
        else if (B < 0) { tutu = "A Z, B -"; }
        else { tutu = "A Z, B Z"; }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var titi = (A > 0) ? 
        (B > 0) ? "A +, B +" : (B < 0) ? "A +, B -" : "A +, B Z" : 
        (A < 0) ? (B > 0) ? "A -, B +" : (B < 0) ? "A -, B -" : "A -, B Z" : 
        (B > 0) ? "A Z, B +" : (B < 0) ? "A Z, B -" : "A Z, B Z";
    OK, on ne parle plus du Nullable<T> ici, mais c'est pour dire que raccourcir la syntaxe n'est pas systématiquement une bonne idée.

  10. #10
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par popo Voir le message
    Voici le genre de chose que j'ai déjà vu dans du code (et encore je l'ai simplifié)
    Qu'est-ce qui te parait le plus compréhensible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    string tutu;
    if (A > 0)
    {
        if (B > 0) { tutu = "A +, B +";} 
        else if (B < 0) { tutu = "A +, B -"; }
        else { tutu = "A +, B Z"; }
    }
    else if (A < 0)
    {
        if (B > 0) { tutu = "A -, B +"; }
        else if (B < 0) { tutu = "A -, B -"; }
        else { tutu = "A -, B Z"; }
    }
    else
    {
        if (B > 0) { tutu = "A Z, B +"; }
        else if (B < 0) { tutu = "A Z, B -"; }
        else { tutu = "A Z, B Z"; }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var titi = (A > 0) ? 
        (B > 0) ? "A +, B +" : (B < 0) ? "A +, B -" : "A +, B Z" : 
        (A < 0) ? (B > 0) ? "A -, B +" : (B < 0) ? "A -, B -" : "A -, B Z" : 
        (B > 0) ? "A Z, B +" : (B < 0) ? "A Z, B -" : "A Z, B Z";
    OK, on ne parle plus du Nullable<T> ici, mais c'est pour dire que raccourcir la syntaxe n'est pas systématiquement une bonne idée.
    Euh... Ceci ? (en tout cas, si c'est pas plus lisible ça a au moins le mérite très bien plus performant !)
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char[] note = new char[]() { '-', 'Z', '+'};
    string tutu = $"A {note[Math.Sign(A) + 1]}, B {note[Math.Sign(B) + 1]}";

    Évidement, dans la vraie vie, je remplacerais "note[Math.Sign(A) + 1]" par un appel à une méthode statique.
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
            private static readonly char[] Signs = new char[] { '-', 'Z', '+' };
            private static char GetSignChar(int note)
            {
                return Signs[Math.Sign(note) + 1];
            }
     
            static void Main(string[] args)
            {
                int A = 10, B = -1;
                string tutu = $"A {GetSignChar(A)}, B {GetSignChar(B)}";
                Console.WriteLine(tutu);
     
                Console.ReadKey(true);
            }


    Accessoirement, si y'a bien un truc que je trouve illisible, c'est bien cette manie de foutre des "var" à tout bout de champ.
    Même JavaScript s'est mis aux types forts, j'arrive pas à comprendre cette mode à absolument vouloir faire abstraction des types qu'on utilise.
    On ne jouit bien que de ce qu’on partage.

  11. #11
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Accessoirement, si y'a bien un truc que je trouve illisible, c'est bien cette manie de foutre des "var" à tout bout de champ.
    Même JavaScript s'est mis aux types forts, j'arrive pas à comprendre cette mode à absolument vouloir faire abstraction des types qu'on utilise.
    Je suis bien d'accord avec toi concernant le var.
    Mais ça c'est une question de gout.

    Dans mon équipe par exemple j'ai un type qui trouve que ceci est redondant et je me fait traiter de tout les noms si je ne mets pas var
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using (WebClient client = new WebClient()){ ... }
    Alors que ceci acceptable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string x = GetSomething();

    Par contre, je n'ai encore jamais vu cette syntaxe avec le dollar.
    Par curiosité, je l'ai essayé mais ça ne compile pas, j'ai le message : Unexpected character '$' (j'essayé en 4.6.2)

  12. #12
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    C'est une nouveauté de la 4.7

    Je trouve cette syntaxe bien pratique, ça économise énormément de code.
    Par contre, ça peut vite devenir le bordel si on est crasseux...

    Il est préférable de se limiter aux variables ou simples appels de méthodes simples... Comme pour les arguments d'un String.Format()...
    On ne jouit bien que de ce qu’on partage.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup ça fonctionne nickel. J'avais déjà tenté un cast (Bouclier)bouclier.Energie; mais avec une parenthèse en moins ce n'est pas la même chose. Mais par contre je ne ferai plus cette erreur

  14. #14
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Question performance, "as" n'est-il pas plus performant que le cast ?
    le mieux doit être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (variable is bouclier b) console.writeline(b.propriete)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    le mieux doit être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (variable is bouclier b) console.writeline(b.propriete)
    Ah oui c'est vrai que j'avais oublié cette évolution du is qui fait un as
    On ne jouit bien que de ce qu’on partage.

  16. #16
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    le mieux doit être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (variable is bouclier b) console.writeline(b.propriete)
    Compile pas en 4.6.2...
    C'est aussi une nouveau du 4.7 ?

  17. #17
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par popo Voir le message
    Compile pas en 4.6.2...
    C'est aussi une nouveau du 4.7 ?
    Oui c'est un raccourci de 4.7
    On ne jouit bien que de ce qu’on partage.

  18. #18
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Question performance, "as" n'est-il pas plus performant que le cast ?

    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (lavariable is Bouclier) // test du type
    {
      var energie = (lavariable as Bouclier).Energie; // pas de création d'un nouveau handle
      //
    }
    Cela dépend complètement de la situation. Il serait intéressant de refaire des tests aujourd'hui (comme les compilateurs ont beaucoup évolué), mais caster un objet pour faire du downcasting est différent que caster un objet en int? par exemple.

    Dans le premier cas, l'usage de as était plus performant qu'un cast. Dans le second cas, l'usage du cast (associé à is) était plus performant car le compilateur pouvait éviter les opérations de box/unboxing.

    Quoi qu'il en soit, d'un point de vue performance, la cast avec as ou avec le nouveau pattern is de C# 7 sont équivalent en terme de performance.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  19. #19
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par François DORIN Voir le message
    Quoi qu'il en soit, d'un point de vue performance, la cast avec as ou avec le nouveau pattern is de C# 7 sont équivalent en terme de performance.
    persuadé que ce n'était qu'un syntaxic sugar j'avais regardé l'IL généré de if (instance is type newvar) comparé à as et il y avait quelques lignes en moins avec le is qui créé une variable (en c# 7.3 il me semble)
    après je sais pas lire l'IL donc je pourrais pas dire la différence ^^
    et c'était peut etre l'utilisation que j'en faisais ensuite qui a pu amener une optimisation
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment accéder à une classe depuis un programme?
    Par KTARIK dans le forum Général Python
    Réponses: 1
    Dernier message: 02/06/2014, 16h48
  2. Réponses: 4
    Dernier message: 23/04/2010, 17h45
  3. Ouvrir une socket sur un PC qui ne fait pas partie du réseau local
    Par Poupinelelapin dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 03/04/2010, 23h16
  4. Réponses: 1
    Dernier message: 20/08/2009, 11h06
  5. [VB.Net] Comment accéder à une propriété de sous-classes ?
    Par druidev dans le forum Windows Forms
    Réponses: 13
    Dernier message: 05/09/2006, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo