有什么区别C#

Ale*_*kin -2 c#

我是C#的新手.
在表单设计中,假设我有一个Textbox,Listview和一个按钮.我为这个按钮编写代码:

listBox1.Items.Add(textBox1.Text);
Run Code Online (Sandbox Code Playgroud)

...它只是将文本框中的文本添加到ListView中.

另一种方式是:

我创建了一个Person.cs类,在那里我添加了它

string FirstName;
public string FN {
    get { return FirstName; }
    set { FirstName = value; }
}
Run Code Online (Sandbox Code Playgroud)

在按钮上我添加:

Student NewStudent = new Student();
NewStudent.FN = textBox1.Text;
listBox1.Items.Add(NewStudent.FN);
Run Code Online (Sandbox Code Playgroud)

这两个会做同样的事情.
第一行只需要一行代码,但第二行是几行.为什么不使用只需要一行的第一个呢?

Joe*_*oey 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; } }
}
Run Code Online (Sandbox Code Playgroud)

然后绑定两个文本框FirstNameLastName,而列表框中显示FullName.