C#学习笔记 什么是类

本文详细介绍了C#编程中的类,作为数据结构和抽象数据类型的代表,以及如何通过实例构造器和析构器来初始化和清理对象。类包含数据成员和函数成员,并支持继承。示例展示了如何定义和使用实例构造器和析构器,以及如何跟踪类实例的数量。
摘要由CSDN通过智能技术生成

什么是“类”

  • 是一种数据结构(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; }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值