面试复习 二

这篇博客主要复习了C#中的反射原理,探讨了如何在运行时动态获取类、对象等信息。还讨论了静态构造函数的错误用法、string与stringbuilder的区别、常用容器类的特点以及泛型容器的优势。此外,还涉及数值类、委托与接口、ref和out关键字、内存管理策略如单例模式和对象池,以及JIT和AOT的编译区别。
摘要由CSDN通过智能技术生成

 

 

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类的原理是首先在内存中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值