总结
来源:互联网 发布:iphone4s蜂窝数据设置 编辑:程序博客网 时间:2024/06/05 02:56
1.请简述值类型与引用类型的区别
1.值类型的存储位置栈中,引用类型的值存在堆中,而栈中存的是堆中存放的地址
2.值类型栈中存放的是实际数据,而引用类型栈中存放的是堆的引用和地址,而堆中存放的才是实际数据
3.值类型存取快,引用类型慢
4.值类型的内存是自己释放(系统释放),引用类型的内存是由.Net的GC释放的(托管资源程序结束后GC回收,非托管需要自己税收)
5.值类型继承stystem.valueType(隐式继承system.object),引用类型继承stystem.Object
2.请简述ArrayList和List<Int>的主要区别
答:ArrayList数据不安全因为所有存进去的对象都被存为Object,List是接口,ArrayList是继承List的一个类
ArrayList里面的对像取出时需要拆箱装箱操作(值类型转引用类型装箱,反之拆箱)
3.请简述GC(垃圾回收)产生的原因,并描述如何避免?
答:当new一个对象时。内存分配不足时,GC就会去回收未使用的对象,然而回收内存是非常复杂的工作需要消耗机器性能
避免办法:1.减少new的次数
2.使用静态成员
3. 减少string,使用stringbuilder
4.请描述Interface与抽象类之间的不同
答:1.类是单继承,而接口是多继承
2.抽象可以有抽象方法也可以有具体实现的方法,接口只能是方法的定义不能实现
3.接口的方法子类必须都实现,抽象方法不需要
5.string ss=new string("f1258")运行会怎样?
答:会报错,string ss=new string(new char[]{'f','1','2','5','8'});应该这样初始化
6.下列代码在运行中会发生什么问题?如何避免?
list<int> list=new List<int>(new int[]{1,2,3,5});
foreach(int item in list)
{
ls.Remove(item);
}
答:foreach只读的,不能遍历去修改
7.请简述关键字Sealed用在类声明和函数声明时的作用
答:声明类时该类不能被继承,声明函数时不能被重写
8.请简述private,public,protected,internal的区别
答:private:私有的仅对本类开放
public:公开的对所有类都开放
projected:对该类及派生类开放
internal:对该类所在的程序集开放
10.反射的实现原理?
答:反射:审查元数据并收集它的类型信息的能力,元数据其实就是指编辑器编译时生成的各种表;
个人观点:就是得到程序集中的属性和方法
1,导入using System.Reflection
2Assembly.Load("程序集");返回一个Assembly
3遍历所有的类
foreach(Type type in Assembly.GetTypes())
{
string name=type.name
}
4 Type type=Assembly.GetType("程序集.类名");
5Activator.CreateIntance(type);
6MethodInfo meth=type.GetMethod("方法名");
7meth.Invoke(null,参数);
- 总结
- 总结
- 总结
- 总结
- 总结!
- 总结
- 总结.
- 总结。
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 关于hibenate 中的session is closed问题
- iOS 获取步数等健康信息
- 开始写点什么——记录工作生活中的感悟
- JavaScript学习总结(二十一)——使用JavaScript的数组实现数据结构中的队列与堆栈
- sublime Text3 注册码
- 总结
- buildroot使用详解
- ROS导航功能包
- C#中接口的作用
- 数据类型的学习(1)
- 面试题目1-20
- jQuery 把input变为disable
- 解决android sdk 运行出现 could not install -smartsocket- listener- cannot bind to 127.0.0.1-5037-的问题
- WebApp用localStorage代替cookie