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 :

La référence non définie à une instance d'objet.


Sujet :

C#

  1. #1
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut La référence non définie à une instance d'objet.
    Bonjour,

    ça fait un bail que j'ai plus fait de C#, mais j'ai décidé de m'y remettre (à votre plus grand malheur )

    J'ai deux classes :
    1. Network
    2. Server


    Un network contient une "List<Server>", première question, est-ce que le type est bien choisi?

    Seconde question, j'ai le code suivant :
    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
            private IList<Network> GetNetworks()
            {
                IList<Network> n = new List<Network>();
     
                Network n0 = new Network("abc");
                Server s = new Server("abc1");
                MessageBox.Show(s.Name);
                n0.Servers.Add(s);
                Server s1 = new Server("abc2");
                n0.Servers.Add(s1);
                n.Add(n0);
     
                Network n1 = new Network("def");
                Server s2 = new Server("def1");
                n1.Servers.Add(s2);
                Server s3 = new Server("def2");
                n1.Servers.Add(s3);
                n.Add(n1);
     
                return n;
            }
    Qui me renvoit un :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Pourtant j'utilise bien new, ça vient de quoi?



    P.S : Server :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
        class Server
        {
            /// <summary>
            /// Variables
            /// </summary>
            string _name;
            string _host;
            string _port;
            string _address;
            string _addressType;
     
            /// <summary>
            /// Minimal constructor
            /// </summary>
            public Server(string name)
            {
                this._name = name;
            }
     
            /// <summary>
            /// Maximal constructor
            /// </summary>
            public Server(string name, string host, string port, string address, string addressType)
            {
                this._name = name;
                this._host = host;
                this._port = port;
                this._address = address;
                this._addressType = addressType;
            }
     
            /// <summary>
            /// Getter / Setter
            /// </summary>
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
     
            private string Host
            {
                get { return _host; }
                set { _host = value; }
            }
     
            public string Port
            {
                get { return _port; }
                set { _port = value; }
            }
     
            public string Address
            {
                get { return _address; }
                set { _address = value; }
            }
     
            public string AddressType
            {
              get { return _addressType; }
              set { _addressType = value; }
            }
        }
    Network :
    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
    29
    30
        class Network
        {
            /// <summary>
            /// Variables
            /// </summary>
            private string _name;
            private IList<Server> _servers;
     
            /// <summary>
            /// Constructor
            /// </summary>
            public Network(string name)
            {
                this._name = name;
            }
     
            // Getter / Setter
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
     
     
            public IList<Server> Servers
            {
                get { return _servers; }
                set { _servers = value; }
            }
        }
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  2. #2
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonjour,

    à vue de nez il manquerait l'initialisation de _servers dans Network
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public Network(string name)
    {
        this._name = name;
        this._servers = new List<Server>();
    }
    En espérant avoir été utile !

  3. #3
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bon ben t'as un bon nez, c'était aussi simple que ça

    Pour le type de Liste, j'ai bon?

    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    Citation Envoyé par Arnaud F. Voir le message
    Un network contient une "List<Server>", première question, est-ce que le type est bien choisi?
    oui, il est bon.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2007
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 677
    Par défaut
    Je vais être totalement HS mais j’assume (de toute manière ton problème a été résolu). ^^ :
    Si tu codes sous VS, tu as un petit snippet très pratique pour créer tes propriétés (c’est surtout très pratique quand t’en as un grand nombre à écrire), tu commences à taper « prop » et tu appuies deux fois sur « tab », là il va te créer la structure de ta propriété, tu n’auras plus qu’à renseigner le type et le nom de cette dernière.

    Tu vas te retrouver avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int MyProperty { get; set; }
    qui est fait exactement la même chose que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private int _myProperty;
    public int MyProperty
    {
         get { return _myProperty; }
         set { _myProperty= value; }
    }

    (tu as le « propg » qui fait la même chose mais avec le « set » en private).

  6. #6
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    C'est noté :
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/01/2013, 12h11
  2. Réponses: 4
    Dernier message: 14/04/2010, 08h47
  3. La référence d'objet n'est pas définie à une instance d'objet
    Par Delphi-ne dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2009, 14h22
  4. Réponses: 16
    Dernier message: 30/10/2008, 18h33
  5. Réponses: 20
    Dernier message: 13/08/2007, 16h11

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