2010-11-21 10 views
2

Es ist eine ArgumentOutOfRangeException in der Mitte der For-Schleife zu werfen, beachten Sie bitte, dass ich den Rest der for-Schleife ausgeschnittenArgumentOutOfRangeException auf initialisiert Liste

for (int i = 0; i < CurrentUser.Course_ID.Count - 1; i++) 
{  
    CurrentUser.Course[i].Course_ID = CurrentUser.Course_ID[i]; 
} 

Der Kodex für Kurs ist

public class Course 
{ 
    public string Name; 
    public int Grade; 
    public string Course_ID; 
    public List<string> Direct_Assoc; 
    public List<string> InDirect_Assoc; 
    public string Teacher_ID; 
    public string STUTeacher_ID; 
    public string Type; 
    public string Curent_Unit; 
    public string Period; 
    public string Room_Number; 
    public List<Unit> Units = new List<Unit>(); 
} 

und CurrentUser (das ist eine neue Erklärung des Benutzers)

public class User 
{ 
    public string Username; 
    public string Password; 
    public string FirstName; 
    public string LastName; 
    public string Email_Address; 
    public string User_Type; 
    public List<string> Course_ID = new List<string>(); 
    public List<Course> Course = new List<Course>(); 
} 

Ich bin wirklich nur eklatant verwirrt, was ich falsch mache. Jede Hilfe würde sehr geschätzt werden.

+0

Mehr als wahrscheinlich ist die 'List' leer. Wo in Ihrem Code initialisieren Sie und fügen Sie Werte hinzu? –

Antwort

9

Sie können nicht in eine Liste indizieren, wenn dieser Offset nicht existiert. So wird zum Beispiel beim Indexieren einer leeren Liste immer eine Ausnahme ausgelöst. Verwenden Sie eine Methode, wie Add das Element am Ende der Liste anzuhängen oder Insert das Element in der Mitte der Liste irgendwo zu platzieren usw.

Zum Beispiel:

var list = new List<string>(); 
list[0] = "foo"; // Runtime error -- the index 0 doesn't exist. 

Auf der anderen Seite :

var list = new List<string>(); 
list.Add("foo");  // Ok. The list is now { "foo" }. 
list.Insert(0, "bar"); // Ok. The list is now { "bar", "foo" }. 
list[1] = "baz";  // Ok. The list is now { "bar", "baz" }. 
list[2] = "hello";  // Runtime error -- the index 2 doesn't exist. 

Beachten Sie, dass in Ihrem Code, dies geschieht, wenn Sie auf die Courses Liste schreiben , und nicht, wenn Sie aus der Liste Course_ID lesen.