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 :

Affecter une valeur a une classe dans une autre [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut Affecter une valeur a une classe dans une autre
    Bonjour,

    J'ai une classe personne et une classe adresse.
    Lorsque j'essaie d'affecter une valeur (personne.adresse.adresse1 = "mon adresse" à mon champ adresse1 de la classe Adresse depuis la classe Personne. J'ai une erreur : 'La référence d'objet n'est pas définie à une instance d'un objet.'
    Comment faire ? Merci d'avance

    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
     
    public class Adresse
        {
            public string adresse1 { get; set; }
            public string adresse2 { get; set; }
            public string cp { get; set; }
            public string ville { get; set; }
            public string pays { get; set; }
        }
     
        public class Personne
        {
            public string nom { get; set; }
            public string age { get; set; }
            public Adresse adresse { get; set; }
        }
    et

    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
     
    static void Main(string[] args)
            {
                Personne personne = new Personne();
     
                personne.age = 20;
                personne.adresse.adresse1 = "mon adresse";
     
                List<Personne> annonces = new List<Annonce>();
                annonces.Add(annonce);
     
                foreach (Annonce ann in annonces)
                {
                    Console.WriteLine(ann.adresse.adresse1);
                    Console.WriteLine(ann.nbre_pieces);
     
     
                }
                Console.ReadKey();
            }

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Ta classe Adresse a aussi besoin d'être initialisée via un new Adresse adr = new Adresse();

    Une des solutions est de faire l'init ainsi ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Personne personne = new Personne
    {
          nom = "",
          age = 0,
          adresse = new Adresse
          {
                adresse1 ="",
                adresse2=""
          }
    }

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Je mettrais plutôt l'instanciation de la classe Adresse dans le constructeur de Personne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Personne
    {
        public Personne()
        {
            adresse = new Adresse();
        }
        public string nom { get; set; }
        public string age { get; set; }
        public Adresse adresse { get; set; }
    }
    Le code qui instancie Personne ne devrait pas avoir à s'en préoccuper.

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    Merci pour vos réponses.

    C'est dans le constructeur, qu'il me semble que ce soit le plus "propre", au niveau du code.

    Est-ce bien toujours comme cela, que je devrais construire mes classes avec les sous-classes ? (en terme de bonne pratiques)

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

Discussions similaires

  1. Réponses: 40
    Dernier message: 21/06/2007, 17h58
  2. Réponses: 1
    Dernier message: 26/03/2007, 01h12
  3. Utiliser une valeur d'un formulaire dans un autre ?
    Par jessy212 dans le forum Access
    Réponses: 3
    Dernier message: 21/08/2006, 13h05
  4. insérer une valeur de type float dans une abse de données
    Par Stephane_br dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/11/2005, 10h47
  5. [MySQL] Pb d'insertion d'une valeur de champ select dans une Bdd
    Par Mimisator dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 20/10/2005, 18h51

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