一、选择题
1、C#中char类型的编码是()
A.ASCB. Unicode C.GBKD. IEEE
2、C#语言中没有指针,如果想在一个方法中改变传入的参数值,那么应当在调用方法时,传入变量的__________。
A.地址 B.引用 C.名称 D. 对象
3、下面哪种情况属于方法的重载:________。
A.方法名称相同,参数类型不同
B.方法名称不同,参数类型不同
C.方法名称不同,参数类型相同
D.方法名称相同,参数类型相同
4、 如果希望一个成员,无法被外界访问,但是可以被子类访问,应当使用_____修饰符。
A.public
B.protected
C.internal
D.private
5、关于readonly关键字的作用,说法正确的是:________
A.它和const关键字的用法与功能一样,为了与C语言区别,所以取了新名称
B. readonly所修饰的变量是只读的,且不需要立即初始化
C. readonly用于修饰方法的参数,表示该参数在方法内不可修改
D. readonly用于修饰文件对象,表示该文件只读
6、static修饰方法时,它的作用是________。
A.表明该方法支持多态
B.表明该方法不支持多态
C. 定义一个静态方法,可以通过类名调用它
D.定义一个只能被调用一次的方法,且只能通过类名调用它
7、编写属性(Property)时,value 关键字的作用是_____:
A.用于获取属性的值
B.在 get 方法中表示当前属性最新的值
C. 它是set方法的返回值,用于表示属性更新是否成功
D. 它是set方法的参数,表示传入的值(引用)
8、_______不是构造方法的特点。(这是一个不严谨的题目)
A.所有类都必须有构造方法
B.构造方法只能通过类名称调用
C.构造方法不可以被继承
D.构造方法没有返回值
9、重载运算符时,需要用到_________关键字。
A.this B.operator
C.symbol D.operation
10、将string类型的变量 s 转换为 int,可以用______。
A.string.ToInt(s)
B.Convert.ToInt32(s)
C.(int)s
D.int(s)
11、下面定义数组的语句,正确的是:
A.int a[] = new int[4];
B.int[] a;
C.int[] a = new int[1,2,3,4]
D.int a[] = new int[4]{1,2,3,4}
12、对于C#的多态,说法正确的是:_______。
A.C#所有方法默认都是 virtual 的,直接重写即是多态的,与 Java 类似
B.父类方法用virtual修饰,子类方法用 override 修饰
C.父类方法无需用virtual修饰,子类方法用 override 修饰
D.父类方法用virtual修饰,子类方法无需用 override 修饰
13、关于interface,说法不正确的是_______。
A.interface的中文是接口
B.一个类可以实现多个interface
C.interface可以被继承
D.每一个类都默认从Interface继承
14、下面有关抽象类的说法,正确的是_________
A.抽象类中至少应有一个抽象方法
B.抽象类中的方法不能提供实现代码
C.抽象类的派生类必须实现该抽象类的所有抽象方法
D.抽象类不能被实例化,因此不需要提供构造方法
15、在_______情况下,无法使用 new 关键字创建一个类的对象。
A.没有构造方法的类
B.被const修饰的对象
C.在类的静态方法中
D.某个类被abstract关键字修饰
16、下面有关属性的说法,不正确的是_______。
A.属性可以被继承,不能被重写
B.属性可以不和任何字段相关联
C.属性的get访问函数是不带参数的特殊方法
D.属性的set访问函数是没有任何返回值的特殊方法
17、.NET中,所有类的父类是________。
A.class
B.System
C.Type
D.Object
18、如果要写一个只读的属性(Property),应当_______。
A.使用 readonly 修饰
B.仅提供get方法
C.仅提供set方法
D.使用const修饰
19、读取一个图片文件的内容时,应当使用_________类。
A.StreamReader B.StreamWriter
C.BinaryReader D.BinaryWriter
20、关于构造方法和继承,说法正确的是______。
A.构造方法无法被继承,子类必须用类名调用父类构造方法
B.构造方法无法被继承,子类只能通过base关键字调用父类构造方法
C.构造方法是多态的,子类无需调用父类的构造方法
D.构造方法可以被继承,但是子类必须调用父类构造方法
二、填空题
[if !supportLists]1、 [endif]C#标志符由字母、数字、下划线组成,其中数字不能开头。
2、面向对象最基本的特征是封装、继承、多态。
3、.NET中,所有类的父类是Object或 object。
4、异常处理需要使用try和catch两个关键字。
6、C#中,类的继承被限定为单继承,但是一个类可以实现多个接口。
7、Plane类有一个double类型的变量 _Speed,它表示速度。请补全它的属性定义:
public double Speed{
get{return _Speed;}
set{_Speed=value;}
8、有一个表示可绘制图形的类(DrawableShape),它的父类是Shape。请补全下面的类定义。
abstract class Drawable Shape:Shape{
int _LineWith;
public DrawableShape():base(""DrawableShape"){
_LineWidth=1;
}
publicbastract void Draw();
}
三、问答题
1、 请说明方法重写与重载的书写方法。
重载:方法名称相同,参数列表不同
重写:方法的访问修饰符、名称、参数列表和返回值均相同,父类由virtual修饰,子类由override修饰
2、请说明构造方法的特别之处。
(1)与类名称相同。
(2)没有返回值。
(3)只能通过new间接被调用。
(4)无法被继承。
(5)所有类都具有。
(6)创建对象时,会从最顶层父类开始依次调用父类构造方法。
3、对象序列化是很常用的功能,其作用是实现任何对象与字节数组之间的转换。序列化是一个接口,名称是ISerializable,它有两个方法:
1、ToBytes:将当前对象转换为 byte 数组;
2、FromBytes:将数组内容读入对象,返回值表示是否执行成功。
请写出该接口的定义。
interface ISeralizable{
byte[]ToBytes();
bool From Bytes(byte[]bytes);
}
interface ISerializable{
byte[]ToBytes();
bool FromBytes(byte[]bytes);
}
4、有一个类,它有一个字符串数组成员content,请写出对应的索引器代码。
String this[int i]
{
get { return content[i]; }
set { content[i] = value; }
}
String this[int i]{
get{return content[i];}
set【contont[i]=value;}
}
int this[int index]{
get{return arr[index];}
set{arr[index]=value;}}