Unity脚本基础Day02

1>  C#中所有引用类型的基础是什么?

(1)引用类型的基类是System.Object

(2)值类型的基类是System.ValueType,也隐式继承System.Object

2>请简述ArrayList和List<Int>的主要区别?

(1)ArrayList不带泛型    数据类型丢失

(2)List<T>带泛型   数据类型不丢失

(3)ArrayList需要装箱拆箱  List<T>不需要

3>请简述GC(垃圾回收)产生的原因,并描述如何避免?

GC为了避免内存溢出而产生的回收机制

避免:

(1)减少new产生对象次数

(2)使用公用的对象(静态成员)

(3)将string换为stringBuilder

4>请描述Interface与抽象类之间的不同

(1)接口不是类,不能实例化,抽象类可以间接实例化

(2)接口是完全抽象,抽象类为部分抽象

(3)接口可以多继承,抽象类是单继承

5>反射的实现原理?

可以在加载程序运行时,动态获取和加载程序集,并且可以获利到程序集的信息,反射即在运行期动态获取类,对象,方法,对象数据等的一种重要手段.

主要使用的类库:System.Reflection

核心类:

1>Assembly描述了程序集

2>Type描述了类这种类型

3>ConstructorInfo描述了构造函数

4>MethodInfo描述了所有的方法

5>FieldInfo描述了类的字段

6>PropertyInfo描述类的属性

通过以上核心类可在运行时动态获取程序集中的类,并执行类构造产生类对象,动态获取对象的字段或属性值,更可以动态执行类方法和实例方法等

6>.Net与Mono的关系?

(1).Net是一个语言平台

(2)Mono为.Net提供集成开发环境,集成并实现了.Net的编译器,CLR和基础类库,使得.Net既可以运行在windows也可以运行于linux,Unix,Mac  OS等

7>在类的构造函数前加上static会报什么错?为什么?

构造函数格式为public+类名      如果加上static会报错(静态构造函数不能有访问修饰符)

原因:

(1)静态构造函数不允许访问修饰符,也不接受任何参数

(2)无论创建多少类型的对象,静态构造函数只执行一次

(3)运行库创建类实例或者首次访问静态成员之前,运行库调用静态构造函数

(4)静态构造函数执行先于任何实例级别的构造函数

(5)显然也就无法使用  this和base来调用构造函数

原文地址:https://www.cnblogs.com/qipei/p/10034164.html