2015-01-31供稿中心: 北大青鸟武汉中南软件学院
Q:您在什么情况下会用到虚方法(虚函数)?
虚函数为了指明某个成员函数具有多态性,用关键字virtual来标志其为虚函数。
既然虚函数为多态而生,那么简单的说当我们在C#中要想实现多态的方法之一就是使用到虚函数。
Q:Override与重载有什么区别?
1.
父类:public virtual string ToString(){return "a";}
子类:public override string ToString(){return "b";}
2.
同一类中或父子关系类中皆可:
public string ToString(){return "a";}
public string ToString(int id){return id.ToString();}
override是用于重写基类的虚方法,这样在派生类中提供一个新的方法;
重载是提供了一种机制, 相同函数名通过不同的返回值类型以及参数来表来区分的机制;
Q:值类型与引用类型有什么区别?
NET将数据类型分为值类型(value type)和引用类型(reference type)
一个具有值类型(简单类型、结构类型、枚举类型)的数据存放在栈内的一个变量中。即是在栈中分配内存空间,直接存储所包含的值,其值就代表数据本身。值类型的数据具有较快的存取速度。
一个具有引用类型(类、代表、数组、接口)的数据并不驻留在栈中,而是存储于堆中。即是在堆中分配内存空间,不直接存储所包含的值,而是指向所要存储的值,其值代表的是所指向的地址。当访问一个具有引用类型的数据时,需要到栈中检查变量的内容,该变量引用堆中的一个实际数据。引用类型的数据比值类型的数据具有更大的存储规模和较低的访问速度。
Q:怎样理解静态变量?
静态变量(static)是相对自动变量(auto)等而言的,一旦声明为静态变量,在编译时刻开始永远存在,不受作用域范围约束,但是如果是局部静态变量,则此静态变量只能在局部作用域内使用,超出范围不能使用,但是它确实还占用内存,还存在.自动变量就是一般的变量,在C语言中auto关键字可以省略.
Q:向服务器发送请求有几种方式?
一种是Post;别一种是got;
Q:DataReader与Dataset有什么区别?
DataReader和DataSet大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了条后就不能再去读取条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...
Q:如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
<a href=”a.aspx?x=111&y=222”>链接地址传递</a>
String str=request[“x”];
Response.redirect()方式;
Server.tranfer()方式;
Viewstate方式;
Cache方式;
Q:用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级.
三层结构包含:表示层(USL),业务逻辑层(BLL),数据访问层(DAL)
(1)数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.(2)业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。(3)表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
Q:通过超链接怎样传递中文参数?
Server.UrlEncode()