.Net及C#基础知识,面试宝典 (8)

答:ADO,ADO.Net,MDAC(Microsoft Data Access Components),Microsoft SQL Server OLE DB Provider,Microsoft Jet OLE DB Provider,Desktop Database Drivers ODBC Driver,Visual FoxPro ODBC Driver  


什么是装箱和拆箱? 

答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。装箱(boxing)是将 值类型的数据转化成引用类型,int i=3; object o = i ;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,比如int j = (int)o;属于拆箱


接口含义:接口是指一组函数成员而不实现他们的引用类型,通常只能通过接和类的继承,继承接口要实 其全部方法


什么时候使用抽象类,什么时候用接口 :
接口用于规范,抽象类用于共性。

接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。

抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。

抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。 


枚举的使用:https://www.cnblogs.com/claspcn/p/5218520.html


委托和事件:()委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

 
const和readonly有什么区别?

 const关键字用来声明编译时常量,readonly用来声明运行时常量。


用sealed修饰的类有什么特点 sealed 修饰符用于防止从所修饰的类派生出其它类,如果一个密封类被指定为其他类的基类,则会发生编译时错误。 密封类不能同时为抽象类。 sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。 


虚函数的用法 

1)virtual指明一成员函数为虚函数,而virtual仅用于类的定义里,在类外可不加此关键字. 

2)一个类的成员函数被定义为虚函数时,子类该函数仍保持虚函数特征. 

3)子类覆盖此函数时,定义里可不加virtual关键字,但函数声明要和基类的完全一致!且此声明是必须的. 

4)不是纯虚函数时,父类的虚函数必须要实现; 而若将父类的虚函数设定为纯虚函数时,子类必需要覆盖之而且必须要实现之! 


解释virtual、sealed、override和abstract的区别 virtual申明虚方法的关键字,说明该方法可以被重写 sealed说明该类不可被继承 override重写基类的方法 abstract申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。 

c#继承:

base表示对象基类的实例(使用base可以调用基类中的成员)base 表示当前对象基类的实例(使用base关键字可以调用基类的成员)this表示当前类的实例  

在静态方法中不可以使用base和this关键字  

派生类会继承基类所有的成员但是构造函数和析构函数不会被继承  

 

什么是析构函数:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsswp.html