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<friends> a=new list<friends>();
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;
}