创建具有相同名称的类。这是如何运作的?

时间:2015-06-24 02:26:00

标签: c# oop reference

我是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;只是指向一个位置,这是最近创建的学生的位置?

我的实施是否良好实践?

非常感谢。

1 个答案:

答案 0 :(得分:3)

我相信你在谈论List&lt;&gt;之间的关系。和班级。 列表只是指向类的指针。

上面示例中的学生名称是一个局部变量,它只存在于创建它的方法中。它永远不会被再次引用,名称也不会保存在List&lt;&gt;中。

基本上发生的事情是在内存中创建一个对象。然后学生引用/指向该对象。然后列表指向该对象。最后,当方法结束时,学生超出范围并永远丢失。