2015-06-24 113 views
2

我是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); 
} 

现在,这一切工作正常,我可以通过“ListStudents名单迭代,并看到所有我想补充的名字。不过,我想知道这不是抛出一些错误,因为我的代码每次单击按钮时反复创建一个名为“学生”的学生类。可能有20个班级全部命名为“学生”,但其所有独特信息都保留在ListStudents中。这些都在相同的命名空间。

原谅我是因为我是新人,但我对此非常感兴趣。我明白,类是参考类型,所以“学生”类指向与相关信息的一块记忆。这种情况下,ListStudents的每个索引都指向这块内存,但是名为“student”的类只能指向一个位置,即最近创建的Student的位置?

我的实施是否高于良好做法?

非常感谢。

+0

你的实现很好。 –

回答

3

我相信你在谈论名单<>和班级之间的关系。 列表只是指向类的指针。

上例中的名称学生是一个局部变量,它只存在于其创建的方法中。它不会再被引用,名称也不会保存在列表<>中。

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

+0

谢谢,这是一个非常好的解释。 –

+0

@FragMonkey没问题,很高兴提供帮助。 – deathismyfriend

相关问题