总结

来源:互联网 发布: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,参数);





 


原创粉丝点击