多个类的用途是什么

时间:2014-12-01 12:30:18

标签: c#

我作为一名学生学习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;
}

为什么有人会为一些变量单独创建一个类?

2 个答案:

答案 0 :(得分:0)

原因1

使代码更容易理解。

不要低估易于理解代码的重要性

想象一下:

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});这对眼睛来说很难,对于更复杂和更不直观的设置数据,这种方法很快就会成为一个噩梦。但是,创建学生对象可以保持可读性,即使有数百个属性。

原因2

我们可以序列化对象

我们可能希望通过HTTP返回此信息(例如)。有很多单个变量很难处理,但是,如果它们都在一个对象(DTO)中,那么我们可以使用Serializers将对象转换为XML或JSON(或二进制或其他)等文本然后返回再次成为一个对象。

原因3

它的OOP

您正在使用面向对象的语言,整个框架和工具都希望您使用对象。如果你这样做,你的生活将变得更加容易。

原因......

人们可以添加许多其他原因,这些是我能够做到的主要原因。

答案 1 :(得分:0)

  1. 首先,因为你正在学习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#书中都有一章关于类。阅读它,你会更清楚。

  2. 在您的示例中,我们创建了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; }

  3. 如果你向这个代码添加一个这样的构造函数并在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>());
    

    使用学生班,您可以给予学生的附加行为,像其他班级中的类型一样使用它等等。

    1. 请阅读我提到的有关封装和其他OOP原则的书。 另请阅读SOLID。有很多关于SOLID的好文章。