我作为一名学生学习C#,我偶然发现了这一点。
class Student
{
public string First { get; set; }
public string Last {get; set;}
public int ID { get; set; }
public string Street { get; set; }
public string City { get; set; }
public List<int> Scores;
}
为什么有人会为一些变量单独创建一个类?
答案 0 :(得分:0)
(不要低估易于理解代码的重要性)
想象一下:
class Student
{
public string First { get; set; }
public string Last {get; set;}
public int ID { get; set; }
public string Street { get; set; }
public string City { get; set; }
public int[] Scores { get; set; }
}
class SomethingComplex
{
public void AComplexThing_1(string first, string last, int id, string street, string city, int[] scores)
{
// do something
}
public void AComplexThing_2(Student student)
{
}
}
当调用AComplexThing_1
时,该方法看起来像AComplexThing_1("Al","Williams", 12345, "Highbridge", "Liverpool", new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9});
这对眼睛来说很难,对于更复杂和更不直观的设置数据,这种方法很快就会成为一个噩梦。但是,创建学生对象可以保持可读性,即使有数百个属性。
我们可能希望通过HTTP返回此信息(例如)。有很多单个变量很难处理,但是,如果它们都在一个对象(DTO
)中,那么我们可以使用Serializers将对象转换为XML或JSON(或二进制或其他)等文本然后返回再次成为一个对象。
您正在使用面向对象的语言,整个框架和工具都希望您使用对象。如果你这样做,你的生活将变得更加容易。
人们可以添加许多其他原因,这些是我能够做到的主要原因。
答案 1 :(得分:0)
首先,因为你正在学习C#,我认为阅读一本关于C#的书是个好主意。 例如 : 首先是C# - http://shop.oreilly.com/product/0636920027812.do
C#5.0 in Nutshell - http://shop.oreilly.com/product/0636920023951.do?green=79F4A289-A404-5C1D-B0D4-B96CD2771BC9&intcmp=af-mybuy-0636920023951.IP
或另一本书。几乎每本C#书中都有一章关于类。阅读它,你会更清楚。
在您的示例中,我们创建了Student类,因为这些Properties表示一个Object 学生。我们在一个类中包含有关Student的信息,因此我们可以轻松地创建和重用 这种结构。
class Student
{
public string First { get; set; }
public string Last { get; set; }
public int ID { get; set; }
public string Street { get; set; }
public string City { get; set; }
public List<int> Scores;
}
如果你向这个代码添加一个这样的构造函数并在TestClass中测试它以找出区别:
class Student {
public string First { get; set; }
public string Last { get; set; }
public int ID { get; set; }
public string Street { get; set; }
public string City { get; set; }
public List<int> Scores;
public Student(string First, string Last, int ID, string Street, string City, List<int> Scores)
{
this.First = First;
this.Last = Last;
this.ID = ID;
this.Street = Street;
this.City = City;
this.Scores = Scores;
}
}
class TestStudentClass
{
public void Test()
{
Student student1 = new Student("Student1", "Student1LastName", 1, "Street Name", "Some City", new List<int>());
Student student2 = new Student("Student2", "Student2LastName", 2, "Street Name", "Some City", new List<int>());
Student student3 = new Student("Student3", "Student3LastName", 3, "Street Name", "Some City", new List<int>());
Student student4 = new Student("Student4", "Student4LastName", 4, "Street Name", "Some City", new List<int>());
// not like this
//For student1
string Student1First = "Student1";
string Student1Last = "Student1LastName";
int Student1ID = 1;
string Student1Street = "Street Name";
string Student1City = "Some City";
List<int> Student1Scores = new List<int>();
//For student2
string Student2First = "Student2";
string Student2Last = "Student2LastName";
int Student2ID = 2;
string Student2Street = "Street Name";
string Student2City = "Some City";
List<int> Student2Scores = new List<int>();
// and so on
}
}`
你可以看到它的发展方向。创建每个学生的代码太长,如果你想将该学生传递给一个方法,你必须传递6个变量。
Student student1 = new Student("Student1", "Student1LastName", 1, "Street Name", "Some City", new List<int>());
SomeMethod(student1);
//or
SomeMethod("Student1", "Student1LastName", 1, "Street Name", "Some City", new List<int>());
使用学生班,您可以给予学生的附加行为,像其他班级中的类型一样使用它等等。