12.14学习内容

1.析构函数

  • 作用:来帮助我们进行废弃内存的回收机制

  • 变量的声明,方法的声明都会占用程序的内存,而内存太大的话会导致程序运行不顺畅,甚至崩溃,所以就会有了释放内存的行为,也是为了让程序运行起来更加顺畅,C#的析构函数作用就是如此。

  • 语法:

    public class Eat
    {
            ~Eat
           {
    
            }
    }
    

感觉这个并没有什么卵用,只是有一点要注意,就是它的释放顺序。
例如:
classA为父类,classB继承classA,而classC又继承的classB,那么它的释放顺序为先C再B再A。

  • 一个类最先执行的函数为构造函数,在创建类的对象的时候就调用了它的构造函数,最后执行的是析构函数,当这个函数结束的时候,系统会自动判断这个函数是否结束,然后调用它的析构函数来释放内存。

2密封类和密封方法

  • 2.1关键字: sealed

  • 表示什么意思呢,就是这个关键字加在类和方法的前面,顾名思义,密封了,加在类的前面呢,就表示这个类不能被继承了。

  • 但是加在方法前就有所不同了,sealed这个关键字只能加在重写的方法里,重写的方法也是有关键字的,父类的方法要加关键字virtual,子类的方法中要加override,这时候把sealed这个关键字加在override前面,就表示这个方法被密封了,表示这个方法不能被重写了。

3抽象类

  • 关键字abstract
  • 个人理解
  • 老师在上课举了个例子,在游戏中会有一个怪物类,这个怪物类中有作为怪物的基本属性和攻击方法,但是游戏中会有BOSS和小怪,他们的攻击方法不一样,这时候就会用到抽象类。
  • 抽象类中写一个攻击方法,但是不去实现它,让它的子类,小怪和BOSS去继承这个抽象类,那么子类就必须去实现父类中的攻击方法,抽象类中并不是所有的成员都是抽象的,但是这个类中只要有一个抽象方法,那么这个类就必须定义成抽象类。
  • 抽象类只可以进行声明,不能进行实例化,什么意思呢?
    就和 Person P1=new student();
    这时候的Person类只是进行了声明,没有实例化。
    Person P1=new Person();
    等号后面就是进行了实例化。

4list集合

  • 暂且理解为比数组更高级别的东西,他们叫它集合,它和数组的区别在于,数组存储的时候需要大小,就是这个数组要存储多少个元素,而list不用考虑,它还可以存储任何类型的变量,包括我们自己创建的类。
  • 写法
    public list a=new list();
    friends是一种数据类型,a是这个集合的名字。

5产生随机数的方法

  • 写法
    Randon qq=new Ramdon();
    产生一个随机数得有一个变量来接收它,数据长就用lang,短就用int来,是情况而定。
  • 比如要产生一个10位的QQ号码。
    public string creatQq
    {
  • Random qq=new Random();//随机产生一个QQ
    int qqlist=0;//声明一个变量来接收产生的QQ
    for(int i=0;i<10;i++)//用for循环来将这个变量来累加,最终得到一个十位数的数字,作为QQ号。
    {
    qqlist+=qq.next(0,10)*math.pow(10,i)//next是系统的一个方法,产生0到9之间的一个随机数,乘以10的i次方。依次产生每一位数。
    }
    reture qqlist;
    }

你可能感兴趣的:(12.14学习内容)