.NET技术类面试、笔试题汇总(13~19)

13、能用foreach遍历访问的对象的要求

14、GC是什么?为什么要有GC?

15、值类型和引用类型的区别?

16、C#中的接口和类有什么异同?

17、抽象类(abstract class)和接口(interface)有什么区别?

18、是否可以继承Srtring类?

19、下面程序的运行结果:

 static void Main(string[] args)

        {

            Console.WriteLine(GetIt());

            Console.ReadKey();

        }

        static int GetIt()

        {

            int i = 8;

            try

            {

                i++;

                Console.WriteLine("a");

                return i;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)

            }

            finally

            {

                Console.WriteLine("b");

                i++;

            }

        }

13、需要实现IEnumerable接口或者GetEnumerator方法的类型

14、GC是垃圾收集器(Garbage Collection)。程序员不必担心内存管理,因为垃圾收集会自动进行管理。GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC进行回收,必须有程序员手工回收,Filestream和SqlConnection需要程序员调用Dispose进行资源回收。要请求垃圾收集,可以调用GC.Collect()。当一个对象没有任何指向的时候就可以被回收,但不一定会立即回收。

15、1)将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

         2)值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType。但与引用类型相同的是,结构也可以实现接口。

         3)值类型不可能包含null值,然而,可空类型功能允许将null赋给值类型。

         4)每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

16、不同点:不能直接实例化接口,接口不包含方法的实现,接口可以实现多继承,类只能单继承,类定义可以在不同的源文件之间拆分

         相同点:接口,类和结构体都可以从多个接口继承,接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。接口和类包含,事件,索引器,方法和属性。

         补充知识:接口只能定义方法(只能定义行为,不能定义实现也就是字段),因为事件,索引器,属性本质上都是方法,所以接口中也可以定义事件,索引器,属性。

17、相同点:都不能被实例化,都可以通过继承实现其抽象方法。

         不同点:接口支持多继承;抽象类不能实现多继承;

    接口接口只能定义行为:抽象类既可以定义行为,还可能提供实现;

    接口只包含方法(Method),事件(Event),索引器(Index),属性(Proprety)的签名,但不能定义字  段和包含实现的方法;

   抽象类可以定义字段、属性、包含有实现的方法;

   接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。

18、String类是sealed类故不可以继承。

19、运行结果是   a b  9    程序由主函数开始执行Console.WriteLine(GetIt());跳到GetIt()方法执行,i++  i=9;Console.WriteLine("a");输出a, return i,然后执行finally里面的代码,输出b,最后输出9。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。