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

C# Discussion :

Classe imbriquée : référencer un membre de la classe "contenante"


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut Classe imbriquée : référencer un membre de la classe "contenante"
    Hello,

    Est-il possible, au sein d'un classe imbriquée, d'invoquer une variable membre de la classe qui contient la définition de la classe imbriquée ?

    Ou faut-il nécessairement passer ce membre en paramètre ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    La classe parente A, contient une référence vers un objet de type B.
    Estce que B peut accéder à un membre de A ?

    Si c'est la question (et donc que j'ai bien compris), non tu peux pas, il te faut passer l'info en paramètre.

    Par contre prudence, ça sent très fort le problème de conception.

  3. #3
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    nah666 a raison,
    Si ta classe imbriquée doit être vue par l'extérieur,
    C'est qu'elle ne doit pas être imbriquée

    Par contre, tu peux jouer avec une interface
    (qu'implémente ta classe imbriquée)

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Non, la classe imbriquée est privée, et n'est donc vue que par la classe englobante.

    En revanche, cette classe imbriquée a besoin de se référer à un membre de la classe englobante.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Au risque de dire une bêtise, je crois que la classe imbriquée n'est pas nécessairement private mais doit juste avoir un niveau de visibilité inférieure à celui de la classe englobante.

    Comme dit précédemment, est ce que cette classe a vraiment besoin d'être imbriquée ?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Elle ne concerne et ne sera utilisée que par la classe englobante.
    Elle n'a pas à être vue de l'extérieur.

  7. #7
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Le mieux c'est de tester...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public class X
        {
            private int i;
     
            private class Y
            {
                public void F(X x)
                {
                    x.i = 5; // oooh, ça marche ! :)
                }
            }
        }
    Donc oui, une nested class a accès aux membres privés des instances de la classe qui la contient.

    Mais par contre, on est bien d'accord : une classe imbriquée, c'est une définition de classe, mais pas une instance. Ci dessus, dans mon exemple bidon, les instances de X n'ont pas d'instance de Y.
    Franchement, je doute que t'en aies besoin. Ca a un périmètre d'utilisation assez limité.

Discussions similaires

  1. Intérêt des classes imbriquées ?
    Par elitost dans le forum Langage
    Réponses: 5
    Dernier message: 21/10/2005, 09h30
  2. [VB.NET]Reflexion lister les membres d'une classe ...presque
    Par lucie.houel dans le forum ASP.NET
    Réponses: 19
    Dernier message: 20/09/2005, 13h49
  3. Réponses: 3
    Dernier message: 24/04/2005, 14h19
  4. pointeur membre static de classe
    Par Ca$ul dans le forum C++
    Réponses: 3
    Dernier message: 26/08/2004, 13h02
  5. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15

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