C#面试题
2023-07-06
1、override与重载的区别
答:其实很本质的区别就是看函数特征:覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。 函数特征包括函数名,参数的类型和个数。Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。
2、.net的错误处理机制是什么
答:try可能要出错的代码catch出错后如何处理finally不论是否出错都要执行
3、C#中接口和类的异同
答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。
接口可以说是比抽象类更抽象的类,只能继承接口,是一种规范
4、DataReader和DataSet的异同
答:dataset是保存数据的数据结构,断开模式,而DataReader不承担保存数据的责任,需要自己手动关闭连接数据库,它只负责从数据源读取数据到本地而已,是只读向前的,它不是数据结构,而是网络通讯组件的高层封装。
1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.
答:反射,base
2.如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.
答:static int num = 0;在构造函数里num++。
3.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.
答:A构造 →B构造 →B析构 →A析构
4.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
答:string a = ” a b c d e c d “;
string d = a.Replace(” “, ” “);
while (true)
d = d.Replace(” “,” “);
if (d.IndexOf(” “) == -1)
break;