一、判断题[30分](在表格内填空,正确填A,错误填B请不要改变字体的颜色)1、属性必须要有get和set访问器。
2、在派生类中可以访问基类的成员和方法。
3、重载函数间必须要有不同的形参列表。
4、重载函数的参数类型必须不同。
5、任何对象只能属于一个具体的类。
6、A类和B类均有C类需要的成员,因此可以从A类和B类共同派生出C类。
7、B类由A类派生,C类由B类派生,在C类中仅能访问B类的成员,不能访问A类的成员。
8、一个类中只能有一个构造函数。
9、静态类可以被继承,可以实例化。
10、Static 方法可能通过类的实例引用。
11、静态变量属于某个特定的实例。
12、接口中可以包含公有成员,也可包含私有成员。
13、类中的私有成员,可以在类的实例中用实例名直接访问。
14、可以在派生类中访问基类中的protected 成员。
15、构造函数可以被继承。
二、选择题[69分](在表格内填写正确答案的大写字母,请不要改变字体的颜色,当有多个A时,表示是多选题)1、已知:int a=100;void func(ref int b)。
则以下函数调用正确的是-------------------A. func (ref (10*a))B. func(ref 10)C. func(a)D. func(ref a)。
2、以下关于类和对象的说法中,不正确的是--------------------A.类是一种系统的函数B.对象是类的实例C.类和对象的关系是抽象和具体的关系D.一个类可产生若干对象实例3、当创建一个新类时,该类将从System.Object 基类继承下列哪些方法?()A. ToStringB. ToObjectC. EqualsD. GetClassInfomation4、面向对象编程中的“继承”的概念是指()A.派生类对象可以不受限制地访问所有的基类对象B.派生自同一个基类的不同类的对象具有一些共同特征C.对象之间通过消息进行交互D.对象的内部细节被隐藏5、在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成()。
A. sealed 方法B. public 方法C. visual 方法D. override 方法6、类class1,class2,class3的定义如下:abstract class class1{abstract public void test();}Class class2:class1{public override void test() {Console.write(“class2”);}}Class class3:class2{public override void test(){Console.write(“class3”);}}则下列语句的输出是什么? ()(提示:从抽象类的规则)class1 x=new class3();x.test();A.class3 class2 B.class3 C.class2 class3 D.class27、接口MyInterface的定义如下:public interface MyInterface{string Name {get;}}类MyClass定义如下:class MyClass:MyInterface{string Name {get {return "only a test!";}}}则下列语句的编译,运行结果如何? ()MyInterface x=new MyClass();Console.writeLine();A.运行正常,输出字符串”only a test!”B.可以编译通过,但运行出现异常C.编译出错8、以下描述错误的是()A.类不可以多重继承而接口可以;B.抽象类自身可以定义成员而接口不可以;C.抽象类和接口都不能被实例化;D.一个类可以有多个基类和多个基接口;9、“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?()A.publicB.protectedC.internalD.protected internal10、接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。
A.方法、属性、索引器和事件;B.方法、属性信息、属性;C.索引器和字段;D.事件和字段;11、以下叙述正确的是:()A. 接口中可以有虚方法。
B. 一个类可以实现多个接口。
C. 接口不能被实例化。
D. 接口中可以包含已实现的方法。
12、以下哪些可以作为接口成员?()A.方法B.属性C.字段D.事件13、以下的C#代码,试图用来定义一个接口:public interface IFile{int A;int delFile(){A = 3;}void disFile();}关于以上的代码,以下描述错误的是()。
A.以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误;B.以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数;C.代码void disFile();声明无错误,接口可以没有返回值;D.代码void disFile();应该编写为void disFile(){};14、下列关于构造函数的描述正确的是()A.构造函数可以声明返回类型。
B.构造函数不可以用private修饰C.构造函数必须与类名相同D.构造函数不能带参数15、分析C#语句,注意类subCalss没有访问修饰符。
Namespace ClassLibrary1{public class Mylass{Class subClass{int i;}}}若必须为类subClass添加访问修饰符,并使subClass的可访问修饰符保持不变,则应选择()A.Protected B.Internal C.Private D.public16、下列类MyClass的Name属性定义是否正确?public abstract class Base{public abstract string Name{get;set;}}public class MyClass:Base{string n;public override string Name{get{return n;}set{n=value;}}}A.不正确B.正确17、在C#中设计时,如何将一个可读写的公有属性Nmae修改为只读属性?()A.为Nmae添加修饰符 B.将Nmae的set块置空C.将Nmae的set块删除D.在Nmae的set块前加修饰符pravite18、分析以下程序.注意静态构造函数内使用的赋值语句为counter=0.public class staticClass{ static private int _counter;//私有构造函数防止对象生成private staticClass(){}//静态构造函数static staticClass(){ counter = 0;Console.Write (“init!”);}static public int counter{ get{Console.Write(“get!”);return _counter;}set{Conso le.Write(“set!”);_counter=value;}}}则调用语句CladdLibrary1.staticClass.counter = 100;的输出是()A.set! init! set! B.set! init! C.init! set! D.set!19、在下面的类定义中,缺省构造函数的作用是()public class MyClass{private MyClass( ){}public static int counter;public static int increnentCounter(){return ++counter;return ++counter;}}A.在创建类的实例时初始化类的域 B.因为是private的,因此不起任何作用C.防止创建类的实例20、类MyClass定义如下:namespace ClassLibrary1{ public class MyClass{ internal class subclass{ int i ; } } }则类MyClass. Subclass的可访问域为: ()A.在所有引用ClassLibrary1的程序集中可用,但限于MyClass的内部B.定义MyClass时所在的程序集C.在所有引用ClassLibrary1的程序集中可用,但限于MyClass的派生类中D.访问不受限制21、以下关于ref和out的描述哪些项是正确的?()A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
22、类MyClass 中有下列方法定义:public void testParams(params int[] arr){Console.Write (“使用Params参数!”);}public void testParams(int x,int y){Console.Write (“使用两个整型参数!”);}请问上述方法重载有无二义性?若没有,则下列语句的输出为()。
MyClass x = new MyClass();x.testParams(0);x.testParams(0,1);x.testParams(0,1,2);A. 有语义二义性;B. 使用Params 参数!使用两个整型参数!使用Params 参数!C. 使用Params 参数!使用Params 参数!使用Params 参数!D. 使用Params 参数!使用两个整型参数!使用两个整型参数!23、在C#中设计类时,应如何保证在释放对象的所有引用之前,释放对象使用的文件、网络等资源?()A.为类添加析构函数,在析构函数中释放资源B.为类重载new运算符C.类从使用抽象类继承D.为类添加delete运算符三、程序设计题[5分](在表格内填写正确答案的大写字母,请不要改变字体的颜色)1、运行程序3A-8,运行时显示:A.x=10y=1B.x=10y=1y=30C.x=10x=1y=30D.x=10y=1y=202、运行程序3A-9中程序,出错原因是:A.基类成员不能用BASE关键字直接引用B.在静态方法中引用了基类成员C.BASE的语法出错D.BASE不能引用方法。