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 :

passage de <this> par reference


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Par défaut passage de <this> par reference
    Bonjour,

    Je suis face à un problème que je ne sais pas comment résoudre :

    Je concu un objet qui contient un autre Objet de type UserControl.
    Toutefois le UserControl doit pouvoir appeler les fonctions de l'objet qui l'a crée, j'ai donc modifié le constructeur de mon UserControl pour qu'il prenne le passage de l'objet par référence.
    Lors que la création du UserControl, je passe <this> par référence et là j'obtiens une erreur du compilateur m'informant que this est en lecture seule et qu'il ne peux pas être passé par référence.

    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
     
    public class Objet2
    {
         private Objet1 myObject;
         public Objet2 (ref Objet1 anObjet)
         {
             this.myObject = anObjet;
         }
    }
     
    public class Objet1
    {
          private Objet2 myUserControl;
          public Objet1()
          {
                this.myUserControl = new Objet2l(ref this);
          }
    }
    si qqun à une idée je suis preneur.

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Enlève le ref dans le constructeur ainsi que dans le new.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Par défaut
    Oui, c'est sur que comme ca ...
    J'ai besoin que l'objet2 puisse accèder aux fonctions de l'Objet1 ...

  4. #4
    Membre éclairé Avatar de psycho_38
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Par défaut
    Bonjour eKinai,

    Pourquoi veux tu que ton UserControl puissent acceder au méthode du form qui la instancier ??

    Logiquement c'est ton objet1 qui doit utilider les methodes de ton objet 2 et non l'inverse !!!

  5. #5
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Les types référence sont déjà passés par référence...

  6. #6
    Membre éclairé Avatar de psycho_38
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Par défaut
    Les types référence sont déjà passés par référence...
    Oups j 'avai meme pas vu

    Le mot clé ref tu dois l'utilisé pour les types valeur (int, long,...)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Le mot clé ref peut être utilisé pour le passage d'une variable de type référence mais cela n'a d'intérêt que si l'on souhaite modifier la référence.

    Ex, mettre une référence à null.
    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
     
    class essai
    {  }
     
    static void f1(ref essai es)
    {
        es = null;
    }
     
    static void Main(string[] args)
    {
        essai e = new essai();
     
        f1(ref e);
     
        // ici e == null
    }

  8. #8
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    En toute logique, un userControl ne devrait pas avoir de lien sur son parent
    (enfin, on l'a ce lien des les propriétés)

    Car si ton UserControl doit appele des méthodes du pere, c'est que ton
    architecture n'est pas tout à fait satisfaisante

    Il vaut mieux passer dans ce cas la par des Event ou des delegate à fournir
    au UserControl...

    Il vaut mieux avoir un schéma du genre :

    Parent Dit a UserControl "prend ce delegate pour faire ton action"

    plutot que

    UserControl va chercher dans parent (en esperant le trouver) une fonction..

    En agissant ainsi (premier schéma) , tu décorelles l'utilisation du UserControl à des contextes auxquels tu n'aurais pas penser...

    Perso, créer un usercontrol, ca revient à penser composant Seul au monde
    qui n'a besoin de personne pour travailler mais qui peut accepter des
    delegate exterieur QU'ON LUI FOURNIT pour certains actions


    The Monz, Toulouse

Discussions similaires

  1. Passage de tableau de pointeur par reference
    Par dahtah dans le forum Débuter
    Réponses: 7
    Dernier message: 25/08/2011, 17h13
  2. Passage par reference
    Par Seth77 dans le forum Langage
    Réponses: 38
    Dernier message: 03/09/2008, 17h38
  3. [String]passage de String par reference?
    Par Snivel dans le forum Langage
    Réponses: 17
    Dernier message: 02/12/2005, 16h24
  4. [String] passage d'objet par référence
    Par adilou1981 dans le forum Langage
    Réponses: 8
    Dernier message: 01/04/2005, 15h22
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 08h55

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