2010-11-21 157 views
2

它抛出一个ArgumentOutOfRangeException在for循环的中间,请注意,我切出的,其余为环ArgumentOutOfRangeException在初始化列表

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

的代码,课程是

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>(); 
} 

和CurrentUser(这是一个新的用户声明)

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>(); 
} 

我真的只是公然困惑,我做错了什么。任何帮助将非常感激。

+0

很可能,'List'是空的。你的代码在哪里初始化并为其添加值? – 2010-11-21 05:56:12

回答

9

如果该偏移量不存在,则无法将其索引到列表中。因此,例如,索引一个空列表总是会抛出一个异常。使用方法类似Add的项目追加到列表,或Insert结束到列表中的中间位置,项目等

例如放置:

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

在另一方面:

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. 

注意,在你的代码,这是发生在你写入Courses列表,而不是当你从Course_ID列表读取。