1,反射的实现原理
可以在加载 程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息,反射即在运行期动态
获取类,对象,方法,对象数据等的一种重要手段
主要使用的类库:System.Reflection
核心类:
Assembly描述了程序集
Type描述了类这种类型
Constructorinfo描述了构造函数
Methodinfo描述了所有的方法
Fileidinfo描述了类的字段
Propertyinfo描述了类的属性
通过以上核心类可在运行时动态获取程序集中的类,并执行类构造产生类对象,动态获取对象的字段或属性值,更可以动态执行类方法和实例方法等.
2在类的构造函数前加上static会报什么错?为什么?
构造函数格式为:public+类名+static会报错因为静态构造函数不能有访问修饰符
原因:静态构造函数不允许访问修饰符,也不接受任何参数;无论创建多少类型的对象,静态构造函数只执行一次;运行库创建类实例或者首次访问静态成员之前,运行库调用静态构造函数;静态构造函数执行先于任何实例级别的构造函数;显然也就无法使用this和base来调用构造函数.
3,c#string类型比stringbuilder类型优势是什么
如果是处理字符串的话,用string中的方法每次都需要创建一个新的字符串对象并且分配新的内存地址,而stringbuilder是原来的内存里对字符创进行修改,所以字符串处理方面还是建议用stringbuilder这样比较节约内存,但是string类的方法和功能仍然还是比stringbuilder类要强.
string类由于具有不可变性(即对一个string对象进行任何更改时,其实都是创建另外一个string类的对象),所以当需要频繁的对一个string类进行更改的时候,建议使用stringbuilder类,
stringbuilder类的原理是首先在内存中