2012-06-02 3 views
-2

Je reçoisréférence d'objet non définie à une instance d'un objet

Référence d'objet non définie à une instance d'un objet

erreur lorsque vous essayez d'appeler la méthode GetPersonName() dans ma principale méthode .

Quelqu'un peut-il m'expliquer pourquoi cette erreur se produit?

Voici mon code. Merci

//My Class 
class Program 
{ 
    // Main Method 
    static void Main(string[] args) 
    { 
     DMO dmo = GetPersonName(); 
     Console.Write(dmo.PersonArray[0].Name); 
     Console.ReadKey(); 
    } 

    private static DMO GetPersonName() 
    { 
     DMO dmo = new DMO(); 
     dmo.PersonArray[0] = new Person { Name = "XXXXXX" }; // Object reference not set to an instance of an object. 
     return dmo; 
    } 
} 


// My Data Model Object 
public class DMO 
{ 
    private Person[] _personArray; 

    public Person[] PersonArray 
    { 
     get { return _personArray; } 
     set { _personArray = value; } 
    } 
} 

public class Person 
{ 
    private string _name = ""; 

    public string Name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 
} 
+0

Est-ce parce que votre classe et votre fonction sont nommées DMO? J'utiliserais des noms différents pour être en sécurité. – sachleen

+4

@sachleen - De quoi parlez-vous? – Oded

+0

Oups, totalement échoué à la lecture du code là-bas. Ne cherchez pas mon commentaire. – sachleen

Répondre

3

Dans votre classe DMO, vous n'instancier votre _personArray.

Lors de l'instanciation DMO_personArray est null, donc ce code:

dmo.PersonArray[0] 

échoue, comme dmo.PersonArray est null et vous ne pouvez pas accéder à l'un de ses membres.

Vous devez instancier le tout tableau:

dmo.PersonArray = new Person[] { new Person { Name = "XXXXXX" } }; 
1

Ceci est beacuse votre tableau _personArray est nul qui retournera toujours cette erreur, ce que vous pouvez faire par exemple, est de lui donner une initialisation par défaut comme :

private Person[] _personArray = new Person[2]; 
Questions connexes