2010-12-17 12 views
4

mit Mir habe den folgenden Code-Schnipsel, die einen Übersetzungsfehler erzeugt:Objektverweis nicht auf eine Instanz des Objekts festgelegt, wenn eine Liste <T> in C#

public List<string> batchaddresses; 

public MapFiles(string [] addresses) 
{ 
    for (int i = 0; i < addresses.Count(); i++) 
    { 
     batchaddresses.AddRange(Directory.GetFiles(addresses[i], "*.esy")); 
    } 
} 

Ich erhalte eine Fehlermeldung, wenn ich versuche, die List<T>.AddRange() Methode zu verwenden, :

Object reference not set to an instance of an object 

Was mache ich falsch?

+1

Offensichtlich "Objektreferenz nicht auf eine Instanz eines Objekts festgelegt" kommt vor, wenn Sie versuchen, Ihren Code auszuführen. Es ist kein Übersetzungsfehler, es ist ein Laufzeitfehler. –

Antwort

12

Wo werden die Batchadressen initialisiert?

Die Deklaration der Variablen reicht nicht aus. Sie müssen es initialisieren, etwa so:

// In your constructor 
batchaddresses = new List<string>(); 

// Directly at declaration: 
public List<string> batchaddresses = new List<string>(); 
1

Sie die Liste zu initialisieren haben hat

List<String> batchaddresses = new List<String>();

1

Das batchaddresses Feld nicht initialisiert.

public List<string> batchaddresses = new List<string>(); 
0

Von Ihrem Schnipsel, ist es nicht aussehen, als ob batchaddresses initialisiert wird: Sie können es als Teil der Deklaration initialisiert werden. Ersetzen Sie die Zeile durch diese:

public List<string> batchaddresses = new List<string>(); 
Verwandte Themen