2017-01-11 1 views
0

J'ai un objet String array dans une classe, c'est-à-dire, String[] particulars que je veux initialiser pendant l'exécution. Le même segment de code fonctionnait pour un autre objet de classe qui n'était pas un tableau. Ici nd est un objet de classe.Comment résoudre une exception NullReference sur des objets de tableau de chaînes?

int i=0; foreach (DataRow row1 in dt1.Rows) { nd.particulars[i] = row1["floor"].ToString(); nd.quantity[i] = (double)row1["area"]; nd.rate[i] = (double)row1["rate"]; nd.amount[i] = (double)row1["amount"]; i++; }

Le code suivant est de lancer une NullReferenceException. L'erreur indique:

La référence d'objet n'est pas définie sur une instance d'un objet.

La définition de classe est aussi:

class NoteDetails 
{ 
    public string[] particulars; 
    public double[] quantity; 
    public double[] rate; 
    public double[] amount; 

    public string[] mparticulars; 
    public double[] mquantity; 
    public double[] mrate; 
    public double[] mamount; 

    public NoteDetails() 
    { 
     particulars = null; 
     quantity = null; 
     amount = null; 
     rate = null; 

     mparticulars = null; 
     mquantity = null; 
     mamount = null; 
     mrate = null; 
    } 
} 

S'il vous plaît me dire ce que je fais mal?

+0

Avez-vous créé un tableau pour 'nd.particulars' comme si' nd.particulars = new String [taille] '? – MadddinTribleD

Répondre

1

Vous devez initialiser votre tableau de chaînes (et vos autres tableaux aussi). Vous pouvez le faire sur le constructeur de la classe.

nd.particulars = new string[5]; //or whatever size 
+0

Merci, il a résolu le problème principal que j'ai ignoré. :) –

0

* NullReferenceException ** semble que l'un de votre objet est nulle (e ou row1 ou DT1). Si quelque chose est nul, n'oubliez pas de l'instancier.

Vous devez déboguer votre code pour vérifier où vous avez ce problème.

De plus, vous devez tester si votre objet sont nuls pour éviter cette erreur comme ceci:

if(dt1 != null){ 
//do what you want 
} 

ou comme celui-ci (> = C# 6)

dt1?.Rows