1、什么情况下会用到虚方法?它与接口有什么不同?
答:子类重新定义父类的某一个方法时,必须把父方法定义为virtual。
在定义接口中不能有方法体,虚方法可以。
实现时,子类可以可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。
2、常见的HTTP状态码有哪些?各是什么意思?
答:200:(成功) 服务器已成功处理了请求 。通常,这表示服务器提供了请求的网页
400 :(错误请求) 服务器不理解请求的语法
404:(未找到) 服务器找不到请求的网页。
302 :(临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
500 :(服务器内部错误) 服务器遇到错误,无法完成请求。
3、abstract class和interface有什么区别?
答:相同点:
都不能被直接实例化,都可以继承实现其(抽象)方法。
不同点:
接口支持多继承,抽象类不能实现多继承。
接口只能定义行为,抽象类既可以定位行为,还能提供实现。
接口只包括:方法、属性、索引器、事件的签名,不能定义字段和包含实现的方法。
抽象类可以定义字段、属性、包含实现的方法。
接口可用作于结构和类,抽象只能用作于类。
结构可以继承接口,而不能继承类。
4、简述属性与索引器的区别?
答:属性用于以可验证的方式访问私有成员变量。索引器用于以更便捷的方式访问对象中包含的成员数组或集合。
区别:
1、属性名可自定义,索引器必须以this命名。
2、属性可以为实例或静态,索引器必须是实例的。
3、索引器有索引参数列表,而属性没有。
5、DataReader和DataSet的异同?
答:DataReader为在线操作数据, DataReader会一直占用SqlConnection连接,在其获得数据过程中其它操作不可以再使用SqlConnection连接对象。
DataSet为离线操作数据,DataSet会将数据一次性读入内存,然后断开连接,这时其它操作就可以使用SqlConnection连接对象。
由于DataReader一次只读取一行数据,所以占用内存较小。但DataReader为只进且只读的,也就是只能单方向向前读取,如果你想回头去读取上一条数据是不允许的,并且不允许其修改数据。
由于DataSet一次性读取所有数据,所以比较消耗资源,但也提高了灵活性,在断开数据库连接情况下你可以对数据进行任何增删改查,按照任意的顺序读取数据,并可以将其写回到数据库。