2010-11-21 212 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列表讀取。