什么是“类”
- 是一种数据结构(data structure)
- 类是一种抽象数据结构。类本身是一个抽象的结果;类也是抽象数据和行为的载体。
- 是一种数据类型
- 类是一种引用类型,具体到每一个类上,每一个类都是一个自定义的类型。
- 代表现实世界中的“种类”
类是一种数据结构,它可以包含数据成员(常量和字段)、函数成员(方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数)以及嵌套类型。类类型支持继承,继承是一种机制,它使派生类可以堆基类进行扩展和专用化。
——《C#语言规范》
构造器与析构器
实例构造器:作为一种方法,负责类中成员变量(域)的初始化。
class Program
{
static void Main(string[] args)
{
//Student stu = new Student() { ID = 1, Name = "Tfos" };
//类型可以声明变量stu,可以创建实例new Student()
//Student()的括号就是在调用它的默认构造器,不接受任何参数。作用是把所有的字段清空成默认值
//一旦提供了非默认构造器,编译器就不再生成默认构造器
Student stu = new Student(1,"Tfos");
stu.Report();
}
}
class Student //自定义的引用类型
{
public Student(int id,string name) //自定义构造器,没有返回值。构造器名称必须和类名相同
{
this.ID = id;
this.Name = name;
}
public int ID { get; set; }
public string Name { get; set; }
public void Report()
{
Console.WriteLine($"I'm No.{ID} student,my name is {Name}.");
}
}
析构器:析构函数,当一个对象在消亡的时候,由编译器自动调用。
class Program
{
static void Main(string[] args)
{
Student stu = new Student(1,"Tfos");
stu.Report();
} //当程序执行到这一步时,程序就会关闭。stu变量就会消失,变量也就没人引用了
//此时析构器就会被调用
}
class Student
{
public Student(int id,string name)
{
this.ID = id;
this.Name = name;
}
~Student() //析构器(析构函数)
{
Console.WriteLine("Bye!Release the system resources...");
}
public int ID { get; set; }
public string Name { get; set; }
public void Report()
{
Console.WriteLine($"I'm No.{ID} student,my name is {Name}.");
}
}
class Program
{
static void Main(string[] args)
{
Student s1 = new Student(1, "Tfos");
Student s2 = new Student(2, "Abigail");
Console.WriteLine(Student.Amount);
}
}
class Student
{
public static int Amount { get; set; }
static Student() //静态构造器——只能构造静态成员
{
Amount = 100;
}
public Student(int id,string name)
{
this.ID = id;
this.Name = name;
Amount++; //每创建一个Student实例,Amount+1
}
~Student()
{
Amount--; //Student实例没了,就Amount-1
}
public int ID { get; set; }
public string Name { get; set; }
}