我是C#的初学者,目前正在学习有关List集合的所有知识。我想知道下面的代码是如何/为何起作用的:
我创建了一个学生列表:
// Create student list
List<Student> ListStudents = new List<Student>();
我使用WPF按钮单击事件将新学生(一个类)添加到此列表中(从一些文本框中收集数据):
private void btnCreateStudent_Click(object sender, RoutedEventArgs e)
{
Student student = new Student();
student.FirstName = txtFirstName.Text;
student.LastName = txtLastName.Text;
student.City = txtCity.Text;
// Add student to list
ListStudents.Add(student);
}
现在这一切都运行正常,我可以遍历&#39; ListStudents&#39;列出并查看我添加的所有名称。但是我想知道这是不是因为我的代码重复创建了一个名为&#34; Student&#34;每次我点击按钮。可能有20个班级都被命名为#34;学生,&#34;但他们所有的独特信息都保留在ListStudents中。这些都在同一名称空间中。
原谅我,我是新人,但我对此非常感兴趣。我知道课程是参考类型所以&#34;学生&#34; class指向具有相关信息的内存块。是不是ListStudents的每个索引指向这个内存块,但是我的类名为&#34; student&#34;只是指向一个位置,这是最近创建的学生的位置?
我的实施是否良好实践?
非常感谢。
答案 0 :(得分:3)
我相信你在谈论List&lt;&gt;之间的关系。和班级。 列表只是指向类的指针。
上面示例中的学生名称是一个局部变量,它只存在于创建它的方法中。它永远不会被再次引用,名称也不会保存在List&lt;&gt;中。
基本上发生的事情是在内存中创建一个对象。然后学生引用/指向该对象。然后列表指向该对象。最后,当方法结束时,学生超出范围并永远丢失。