ArgumentOutOfRangeException для инициализированного списка - PullRequest
2 голосов
/ 21 ноября 2010

В середине цикла For создается исключение ArgumentOutOfRangeException. Обратите внимание, что я вырезал остаток цикла for

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

Я просто явно запутался в том, что я делаю неправильно. Любая помощь будет принята с благодарностью.

1 Ответ

11 голосов
/ 21 ноября 2010

Вы не можете индексировать в список, если это смещение не существует.Так, например, при индексировании пустого списка всегда выдается исключение.Используйте метод, например 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 список.

...