2017-09-20 1 views
0

Ich bin sehr neu in .net. Ich habe eine Klasse, die Eigentum bekommen und festgelegt hat. Wenn ich nun diesem Array einen Wert zuweisen möchte, stehe ich auf Null. Ich bin nicht in der Lage Wert ORM.a[i] = dr["SUMMARY"].ToString();Array konnte keinen Wert zugewiesen bekommen

public class method1 
{ 
    public string[] a{ get; set; } 
    public double[] b{ get; set; } 
} 

publiv method1 GetResponseData() 
{ 
    int i = 0; 
    method1 ORM = new method1(); 

    foreach (DataRow dr in dtResultHistory.Rows) 
    { 
     ORM.a[i] = dr["SUMMARY"].ToString() ; 
     ORM.b[i] = Convert.ToDouble(dr["AVG_TIME"]); 

    } 

    return ORM ; 
} 

Antwort

2

Sie konfrontiert sind null Ausnahme zuweisen, weil Sie instace davon erstellt haben.

so etwas wie

string[] a = new string [size]; 

Wenn Sie keine Details darüber, dass sie, wie viele Elemente ich dort sein würde, schlage ich vor, Sie nutzen Liste machen.

Beispiel:

public class method1 
{ 
    public method1() 
    { 
    a = new List<string>(); 
    b = new List<double>(); 
    } 

      public List<string> a{ get; set; } 

      public List<double> b{ get; set; } 
} 

Sie Code nach dies geschieht

public method1 GetResponseData() 
{ 
    int i = 0; 
    method1 ORM = new method1(); 

    foreach (DataRow dr in dtResultHistory.Rows) 
    { 
     ORM.a.Add(dr["SUMMARY"].ToString()); 
     ORM.b.Add(Convert.ToDouble(dr["AVG_TIME"])); 
    } 
    return ORM ; 
} 
2

Der Fehler sein, weil beide a und b Eigenschaft wurde nicht initialisiert. Initialisiert sie zuerst im Klassenkonstruktor:

public class method1 
{ 
    public method1() { 
     this.a = new string[100]; // We take 100 as an example of how many element the property can handle. 
     this.b = new double[100]; 
    } 

    public string[] a{ get; set; } 

    public double[] b{ get; set; } 
} 
+0

hinzufügen method1 { this.a = neue Zeichenfolge [100]; this.b = neues Doppel [100]; } gibt mir einen Fehler "ungültiges Token '{' in der Klasse struct oder Interface Member Deklaration" – Maddy

+0

@Maddy Whoops Ich habe vergessen, das '()' Zeichen, ich habe meine Antwort bearbeitet .. Jetzt ist es 'public method1() {this.a = neuer String [100]; this.b = neues Doppel [100]; } ' – samAlvin

+1

@Maddy - Sie können nicht 100 Element auf Array zuweisen, ohne zu wissen, Größe. Ihre Verschwendung von Speicherplatz –

Verwandte Themen