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 :

[C#] Comment utiliser this dans un constructeur ?


Sujet :

C#

  1. #1
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut [C#] Comment utiliser this dans un constructeur ?
    Salut, j'essaie d'utiliser l'objet en cours de création dans son constructeur.
    En fait, le fait de le créer, lance la construction d'autres objets, et je voudrais référer le premier objet malheureusement, dans le constructeur, j'ai une exception comme quoi il est null.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public TSudoku( )
        {
          _Niveau = 0;
          _Case = new TCase[ 9, 9 ];
          for &#40; int ligne = 0 ; ligne < 9 ; ligne++ &#41;
            for &#40; int col = 0 ; col < 9 ; col++ &#41;
            &#123;
              _Case&#91; ligne, col &#93;.OwnerSudoku = this; // <- ICI on me dit que this est null
              _Case&#91; ligne, col &#93;.Ligne = ligne;
              _Case&#91; ligne, col &#93;.Colonne = col;
            &#125;
        &#125;
    Comment peut-on faire ?
    Merci.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    En séparant les initialisations de TCaseCollection et de TSudoku
    Es-tu sous framework 1.0, 1.1 ou 2.0 :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Sous Visual Studio 2005 j'ai fait le test et je ne recontre aucun problème. J'ai utilisé le code suivant, qui correspond bien au cas en question (ou alors il faut que je commence à boire), et lorsque j'instancie la classe Parent, je n'ai aucune erreur.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
            public class Enfant
            &#123;
                private Parent parent;
     
                public Enfant&#40;&#41;
                &#123;
                &#125;
     
                public Parent Parent
                &#123;
                    set
                    &#123;
                        parent = value;
                    &#125;
                &#125;
     
            &#125;
     
            public class Parent
            &#123;
                private Enfant enfant;
     
                public Parent&#40;&#41;
                &#123;
                    enfant = new Enfant&#40;&#41;;
                    enfant.Parent = this;
                &#125;
            &#125;
    Framework 1.x ou 2.0 je pense que le comportement sera le même. Après tout, on voit assez souvent des initialisations du style this.maVariable dans les constructeurs il me semble

    Est-ce bien le this qui est considéré comme null ? Si tu places un point d'arrêt sur la ligne et que regardes ce que tu as dans this, as-tu effectivement null ?
    Pas de questions techniques par MP

  4. #4
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    En fait, tu as raison, ce n'est pas this qui est null mais _Case[ ligne, col ]
    Je pense que le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _Case = new TCase&#91; 9, 9 &#93;;
    N'appelle pas le constructeur de TCase et donc ne construit pas les objets.[/code]

  5. #5
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Il faut rechercher dans cette voie maintenant donc. Après l'instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _Case = new TCase&#91; 9, 9 &#93;;
    _Case est null ? Je demande ça parce que tu dis que tu penses que ca vient de là, pas que tu es sûr. Dans l'affirmative, montres le code de TCase que l'on examine la bête
    Pas de questions techniques par MP

  6. #6
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    En fait, le problème était que je créait le tableau de TCase, mais que je ne créais pas chaque TCase dans le tableau.

    J'ai confondu new pour créer un tableau et new pour créer un objet.

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

Discussions similaires

  1. Comment utiliser IAS dans Oracle 9i
    Par marwaza22 dans le forum Oracle
    Réponses: 6
    Dernier message: 14/06/2006, 10h45
  2. [VB.Net] Comment utiliser CSS dans un UserControl ?
    Par GEFIRO1 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 27/04/2006, 10h27
  3. Comment utiliser OpenGL dans un TPanel ?
    Par PCMan dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/12/2005, 18h48
  4. Comment utiliser Opengl dans Visual Basic 6
    Par fun31 dans le forum OpenGL
    Réponses: 1
    Dernier message: 03/12/2004, 11h17
  5. [CR][VB6] comment utiliser CR dans VB ?
    Par kouassi_denis dans le forum SDK
    Réponses: 2
    Dernier message: 26/01/2004, 17h20

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