4

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(これはUserの新しい宣言です)

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

私は自分が間違っていることについて本当に露骨に混乱しています。どんな助けでも大歓迎です。

4

1 に答える 1

15

そのオフセットが存在しない場合、リストにインデックスを付けることはできません。したがって、たとえば、空のリストにインデックスを付けると、常に例外がスローされます。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.

コードでは、これはリストから読み取るときではなく、リストに書き込むCoursesCourse_IDときに発生することに注意してください。

于 2010-11-21T05:54:53.720 に答える