我是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)
这两个会做同样的事情.
第一行只需要一行代码,但第二行是几行.为什么不使用只需要一行的第一个呢?
因为您可能希望在适当的对象中构建程序的数据,而不是记住单个的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)
然后绑定两个文本框FirstName和LastName,而列表框中显示FullName.