什么是”类”

  • 《C#语言规范》定义:类是一种数据结构,它可以包含数据成员(常量和字段)、函数成员(方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数)以及嵌套类型。类类型支持继承,继承是一种机制,它使派生类可以对基类进行扩展和专用化。
    • 是一种数据结构(data structure)
      • 是一种抽象的结果,是一种抽象的载体
      • 包含数据成员,函数成员,以及嵌套类型
    • 是一种数据类型
      • 引用类型,每一个类都有自定义类型,可以声明变量,创建实例,是实例模板
    • 代表现实世界中的”种类”
  • 类的声明格式:

image.png

  • 示例: ```csharp using System;

namespace HelloClass { class Program { static void Main(string[] args) { //创建对象 Student stu = new Student(1,”Tim”) ; stu.Report();

  1. //使用反射访问类中的成员
  2. Type t = typeof(Student);
  3. object o = Activator.CreateInstance(t,2,"Tom");
  4. Student stu1 = o as Student;
  5. Console.WriteLine(stu1.Name);
  6. //使用dynamic访问类中的成员
  7. Type t1 = typeof(Student);
  8. dynamic stu2 = Activator.CreateInstance(t1, 3, "Jim");
  9. Console.WriteLine(stu2.Name);
  10. Console.WriteLine(Student.Amount);
  11. }
  12. }
  13. class Student
  14. {
  15. public static int Amount { get; set; }
  16. //静态构造器:初始化静态成员
  17. static Student()
  18. {
  19. Student.Amount = 100;
  20. }
  21. //实例构造器:初始化实例成员
  22. public Student(int id,string name)
  23. {
  24. this.ID = id;
  25. this.Name = name;
  26. Student.Amount++;
  27. }
  28. //析构函数:释放内存,当类用了底层类时,可用析构函数
  29. ~Student()
  30. {
  31. Console.WriteLine("Bye bye!Release the system resources...");
  32. Student.Amount--;
  33. }
  34. public int ID { get; set; }
  35. public string Name { get; set; }
  36. public void Report()
  37. {
  38. Console.WriteLine($"I'M #{ID} student,my name is {Name}.");
  39. }
  40. }

} ```