安工大C#复习题 下载本文

简答题

1.如何区别重载方法?

不同的参数类型,不同的参数个数,不同的参数顺序

2.C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符,请写出并指出它们之间的区别是什么?

答:

public 可以被任意存取

protected只可以被本类和其继承子类存取

internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”。

protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。

private只可以被本类所存取。

3.接口和抽象类的区别是什么?

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

4.什么是抽象类?

答案:抽象类是含有一个或多个抽象方法的类,抽象类不能实例化。

5、异常的概念

所谓异常,它是指程序在运行过程(而非编译过程)中产生的错误

6、为什么要用finally块?

程序在运行过程中一旦出现异常会立即转向执行相应catch块中的语句,执行完后接着执行try-catch结构后面的语句。这意味着在出现异常时程序并不是按照既定的顺序执行,而是跳转执行。

为维持系统的有效性和稳定性,必须保证有相应的代码能够“弥补”被跨越代码的工作,主要是完成必要的清理工作(如关闭文件、释放内存等)。这种保证机制可以由带finally的try-catch-finally结构来实现。

7、委托(delegate)是C#特有的功能,它也翻译为代理、代表、指代等。

C#中没有指针的概念,但通过委托可以实现C/C++中函数指针的功能,且比函数指针具有更强大的能力。

简单地理解,方法的委托就是方法的别名(或者是方法的代理),通过委托不但可以执行方法,而且可以将方法传到其他的方法中,实现方法回调等。

委托和函数指针关系?

委托大体上相当于C++中的函数指针。但与函数指针不同的是,委托是面象对象的和类型安全的。

8、命名空间的作用:协同开发时,有效减少了由于成员名的重名而带来的麻烦。

程序员只需保证自己编写的命名空间中代码的有效性,而不必考虑其他命名空间中成员的命名问题

9、对话框可以分为模式对话框与非模式对话框。

模式对话框:当模式对话框被打开时同程序中的其他对话框和窗体都不能“动”,即模式对话框处于活动状态时程序就不能切换到其他对话框和窗体中,除非关闭它。非模式对话框:处于活动状态时程序可以切换到其他对话框和窗体中。

From类提供的ShowDialog()方法和Show()方法分别用于实现模式对话框和非模式对话框的显示。

例如:

Form frm1 = new Form();

Frm1.ShowDialog(); //打开模式对话框

Form frm2 = new Form(); Frm2.Show();

10、数据库系统、数据库和数据库管理系统(DBMS)之间的关系:

数据库系统是一种引进了数据库的计算机系统,其组成部分主要包括硬件、软件、数据库、系统涉及的人员等,其中,软件包括数据库管理系统(DBMS)和支持DBMS运行的其他相关软件,以及基于DBMS的应用程序等;

数据库管理系统则是数据库的“操作系统”,是管理数据库的软件系统,如SQL Server 2008、DB2、Oracle等都是数据库管理系统;

数据库是多张数据表(table)的集合,每张数据表由若干行和若干列组成,一行称为一条记录(record/row),一列称为一个字段(field)。能唯一标识每条记录且不含空值(NULL)的一个或多个字段可以定义为主键,每张表至多有一个主键。

可见,数据库系统是一个广泛的概念,凡是以数据库应用为核心的系统所涉及的部分都是它的组成部分。DBMS是数据库系统的一个组成部分,数据库则是DBMS管理的对象。 11、ADO.NET是在ADO的基础上发展而来的一种数据库访问接口,被认为是一个“跨时代的产品”。它提供了平台互用性和可伸缩的数据访问功能,可以使用它来访问关系数据库系统(如 SQL Server 2005、Oracle)和其他许多具有 OLE DB 或 ODBC 提供程序的数据源。

ADO.NET只是一种接口、一种通道,要通过ADO.NET访问数据库还需要有相应的操纵语言,而这种语言就是SQL语言。本章下部分将先简要介绍SQL语言的常用语句,然后再介绍ADO.NET常用的几个对象,最后介绍如何使用这些对象操作数据库。

12、DataReader对象的优点:执行效率高,在体积和开销上它比数据集小,占用内存少DataReader对象的缺点:在读取数据时它与服务器的连接始终是打开的,它只能以单向向前的次序访问记录,所以仅用于数据检索等功能非常单一的设计中。ataAdapter对象除了可以

//打开非模式对话框

实现DataReader对象的功能以外,还可以执行对数据库的插入、更新和删除等操作,其功能要比DataReader对象的功能强得多(要与DataSet对象结合使用)。 但强功能的实现就意味着要付出更多的机器资源,使用起来就显得特别“man”。 因此,如果DataReader对象已经能完成的任务就不必使用DataAdapter对象。

编程题 与程序阅读

1 编一个程序,设园半径r=1.5,园柱高h=3.6,圆周率3.1415定义为常量,求出圆周长、圆面积、圆柱体积。然后用Console.WriteLine方法输出计算结果,输出时要求有文字说明,取小数点后2位数字。例如,圆周长=×××.××。(k10052707) const double Pi = 3.1415; double r = 3, h = 5; double c, s, v; c = 2 * Pi * r; s = Pi * r * r;

v = Pi * r * r * h;

Console.WriteLine(\圆的周长为{0:f2}\Console.WriteLine(\圆的面积为{0:f2}\Console.WriteLine(\圆的体积为{0:f2}\

2 编一个程序,输入三个实数,要求使用if else语句把它们的中间数找出来,可以使用逻辑运算符。(k10032309) float x, y, z, second = 0;

Console.WriteLine(\请输入三个float类型的值\x = float.Parse(Console.ReadLine()); y = float.Parse(Console.ReadLine()); z = float.Parse(Console.ReadLine()); if ((x>y&&xz)) second = x;

else if ((y>x&&yz)) second = y; else

second = z;

Console.WriteLine(\这三个数中的中间数为{0}\

3 编一个程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如, 153=1*1*1+5*5*5+3*3*3,所以153是“水仙花数”。(k10033106) int a, i, j, k;

for (a = 100; a <= 999; a++) {

i = a % 10; k = a / 100;