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来调用构造函数