-2

我是 C# 新手。
在表单设计中,假设我有一个文本框、列表视图和一个按钮。我为这样的按钮编写代码:

listBox1.Items.Add(textBox1.Text);

...这只会将文本框中的文本添加到 ListView 中。

另一种方法是:

我创建了一个 Person.cs 类,并在其中添加了这个

string FirstName;
public string FN {
    get { return FirstName; }
    set { FirstName = value; }
}

在按钮上我添加了这个:

Student NewStudent = new Student();
NewStudent.FN = textBox1.Text;
listBox1.Items.Add(NewStudent.FN);

这两个会做完全相同的事情。
第一个只需要一行代码,而第二个是几行代码。为什么不只使用只需要一行的第一个呢?

4

4 回答 4

6

因为您可能希望在适当的对象中构造程序的数据,而不是记住一个单曲Student的名字在 中textBox1.Text,姓氏在 中textBox4.Text,年龄在 中numericUpDown15.Value。如果表格上有两个学生,每个学生都有自己的名字,但在不同的文本框中(学生 1 的名字是在textBox7还是textBox15?),情况会变得更加混乱。一般来说,我会说你应该避免这种情况。

当您使用数据对象时,当您没有可用的 GUI 时,您也可以自由使用它们,例如在后端代码中,从文件中解析数据等。将内容放入文本框中只是为了使用它们听起来有点麻烦,对吧?

如果你走这条路(使用数据对象),你可能还想使用数据绑定,它告诉输入和显示控件从哪里获取数据。您可以将文本框直接绑定到实例的FN属性,Student而不必编写任何使值更新发生的代码。您也可以告诉列表框,FN当您将Student实例直接放入列表时,它应该显示属性的值(或者您可以将列表框绑定到学生集合)。

你也可以Student像这样为你的类建模:

class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string FullName { get { return FirstName + " " + LastName; } }
}

然后将两个文本框绑定到FirstNameand LastName,同时列表框显示FullName

于 2013-08-01T07:17:06.100 回答
1

他们根本不做同样的事情。可见的效果可能是相同的,但这还不是全部。

您在第二个示例中所做的是创建一个 Student 类型的新对象。在大多数情况下,此类不仅包含 FirstName 字段,还可能包含有关学生的各种其他信息。此外,您很有可能随后将新的 Student 对象添加到一个集合中,以便稍后进行一些更有意义的处理。(例如,添加一个学生可以订阅的课程对象,或以某种方式与学生绑定的成绩对象的集合。

执行此操作的“正确”方法完全取决于您希望程序执行的操作。

于 2013-08-01T07:19:40.870 回答
0

我不知道你想要完成什么,但一个班轮绝对是合法的。第二种方法在您必须将相关数据存储在内存中的情况下是有意义的,例如另外的姓氏,这样您的数据就不会散布在所有地方。它还将允许轻松创建该(相关)数据的列表。

于 2013-08-01T07:21:17.940 回答
0

textbox.text您可能需要在不可用的表格 2 上使用用户名,然后您可能需要以某种方式保存信息。那是您需要使用结构数据对象的地方。

让用户的适当实体允许使用 List 一次容纳多个用户,但为多个用户设置文本框并不是一个好主意。

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string FullName { get { return FirstName + " " + LastName; } }
}

这只是数百万正确的面向对象代码的优势之一。

于 2013-08-01T07:23:05.947 回答