我正在尝试访问公共集合(列表)以在某些文本框中显示该集合中的索引对象。
public partial class UpdateStudentScores : Form
{
int index;
private StudentList students = new StudentList();
public UpdateStudentScores(int target)
{
InitializeComponent();
index = target;
}
private void UpdateStudentScores_Load(object sender, EventArgs e)
{
txtName.Text = students[index].WholeName;
}
}
我运行程序并尝试加载数据,但我的StudentList.cs
中出现异常 public Student this [int i]
{
get
{
return students[i];
}
set
{
students[i] = value;
Changed(this);
}
}
该异常表示我的索引超出范围。我的学生[]里面没有任何物品。当我删除它:
私人StudentList students = new StudentList();
从我的UpdateStudentScores.cs,我不再有这个例外。我的那个集合的初始化如何干扰我的StudentList类的填充?
答案 0 :(得分:1)
您的表单正在加载/初始化,但列表中的索引为零。在代码中没有位置将项目加载到集合中。
您的变量index
是值类型,默认为零。
txtName.Text = students[index].WholeName;
答案 1 :(得分:0)
除非是数组,否则List<T>
在创建时为空(list.Count == 0
)。您必须先添加项目,然后才能通过索引访问它们。
public Student this [int i]
{
get
{
return students[i];
}
set
{
if (i < students.Count) {
students[i] = value;
Changed(this);
} else if (i == students.Count) {
students.Add(value);
Changed(this);
} else {
throw new IndexOutOfRangeException(
"Student at this index is not accessible.");
}
}
}