1. (单选题)在C#中,属性从读/写特性上进行分类,可以划分为3种,除了_____________。
A. 只读属性
B. 只写属性
C. 读/写属性
D. 不可读不可写的属性
2. (单选题)在C#中,以下关于属性的描述正确的是____________。
A. 属性是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性
B. 属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏
C. 要定义只读属性,只需在属性名前加上readonly关键字即可
D. 在C#的类中不能自定义属性
3. (单选题)以下类MyClass的属性count属于______________属性。
class MyClass
{
int i;
int count
{ get{ return; } }
}
A. 只写
B. 只读
C. 可读/写
D. 不可读不可写
4. (单选题)以下关于C#中方法重载的说法正确的是_________________。
A. 如果两个方法名称不同,而参数的个数不同,那么它们可以构成方法重载
B. 如果两个方法名称相同,而返回值的数据类型不同,那么它们可以构成方法重载
C. 如果两个方法名称相同,而参数的数据类型不同,那么它们可以构成方法重载
D. 如果两个方法名称相同,而参数的个数相同,那么它们一定不能构成方法重载
5. (单选题)以下_____________不是构造函数的特征。
A. 构造函数的函数名和类名相同
B. 构造函数可以重载
C. 构造函数可以带有参数
D. 可以指定构造函数的返回值
6. (单选题)在C#中,以下有关索引器的参数个数的说法正确的是_______________。
A. 索引可以没有参数
B. 索引器只能有一个参数
C. 索引器可以有多个参数
D. 索引器至少要有两个参数
7. (单选题)在类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);
Console.WriteLine();
A. 使用Params参数!使用两个整型参数!使用Params参数!
B. 使用Params参数!使用Params参数!使用Params参数!
C. 使用Params参数!使用两个整型参数!使用两个整型参数!
D. 有语义二义性
8. (单选题)以下程序的输出结果是____________。
using System;
namespace aaa
{
class Example1
{
static long sub(int x,int y)
{
return x*x+y*y;
}
public static void Main()
{
int a=30;
sub(5,2);
Console.WriteLine("{0}",a);
}
}
}
A. 0
B. 29
C. 30
D. 无定值
9. (单选题)C#中的MyClass是一个自定义类,其方法定义为public void Hello(){ ... }。然后创建该类的对象,并使用变量obj引用该对象,语句为“MyClass obj=new MyClass();”,那么可访问类MyClass的Hello方法的语句是___________。
A. obj.Hello();
B. obj::Hello();
C. MyClass::Hello();
D. MyClass.Hello();
10. (单选题)分析以下C#语句,注意类MyClass没有显示地指定访问修饰符:
namespace aaa
{
class MyClass
{
public class subclass
{ int i; }
}
}
类MyClass的默认访问修饰符是_____________。
A. public
B. protected
C. private
D. internal
11. (单选题)分析下列程序:
public class MyClass
{
private string _sData="";
public string sData
{
set{ _sData=value; }
}
}
在Main函数中成功创建该类的对象obj后,以下___________语句是合法的。
A. obj.sData="It is funny!";
B. Console.WriteLine(obj.sData);
C. obj._sData=100;
D. obj.set(obj.sData)
12. (单选题)以下_________________关键词用于委托类型。
A. event
B. this
C. delegate
D. value
13. (单选题)以下关于委托和委托类型的叙述正确的是__________________。
A. 委托不是一种类的成员
B. 委托必须在类中定义
C. 定义委托需要使用delegate关键词
D. 委托类型是一种数据类型
14. (单选题)分析下列语句:
namespace NS
{
public delegate void Hello(string target);
}
该语句的作用是_______________。
A. 在NS命名空间中定义了一个名为Hello的全局方法
B. 在NS命名空间中函数Hello的原型
C. 在NS命名空间中定义了一个名为Hello的函数指针
D. 在NS命名空间中定义了一个名为Hello的委托类型
15. (单选题)在C#中,以下关于命名空间的叙述正确的是___________。
A. 在一个.cs文件中只能存在一个命名空间
B. 命名空间不可以嵌套
C. 使用private修饰的命名空间,其内部的类不允许访问
D. 命名空间使得代码更加有条理、结构更清晰
16. (单选题)以下_____________关键字用于定义事件。
A. delegate
B. event
C. this
D. value
17. (单选题)将发生的事件通知其他对象(订阅者)的对象称为事件的_____________。
A. 广播者
B. 通知者
C. 发行者
D. 订阅者
18. (单选题)在C#中,一个类____________。
A. 可以继承多个类
B. 可以实现多个接口
C. 在一个程序中只能有一个子类
D. 只能实现一个接口
19. (单选题)以下关于继承机制的叙述正确的是____________。
A. 在C#中任何类都可以被继承
B. 一个子类可以继承多个父类
C. object类是所有类的基类
D. 继承有传递性,如果A类继承B类,B类又继承C类,那么A类也继承C类
20. (单选题)____________关键字用于在C#中从派生类中访问基类的成员。
A. new
B. super
C. this
D. base
21. (单选题)在C#中,在派生类中对基类的虚函数进行重写,要求在派生类的声明中使用__________。
A. override
B. new
C. static
D. virtual
22. (单选题)
有以下程序:
using System;
namespace aaa
{
class A
{
public A()
{
Console.Write("A");
}
}
class B:A
{
public B():base()
{
Console.WriteLine("B");
}
}
class Program
{
public static void Main()
{
B b=new B();
}
}
}
上述代码运行后将在控制台窗口输出__________。
A. A
B. B
C. A B
D. B A
23. (单选题)以下关于抽象类的叙述中,错误的是____________。
A. 抽象类中可以包含非抽象方法
B. 含有抽象方法的类一定是抽象类
C. 抽象类不能被实例化
D. 抽象类可以是密封类
24. (单选题)在C#中,接口与抽象基类的区别在于____________。
A. 抽象类中可以包含非抽象方法,而接口不包含任何方法的实现
B. 抽象类可以被实例化,而接口不能被实例化
C. 抽象类不能被实例化,而接口可以被实例化
D. 抽象类能够被继承,而接口不能被继承
25. (单选题)以下关于抽象类和接口的叙述中,正确的是_____________。
A. 在抽象类中所有的方法都是抽象方法
B. 继承自抽象类的子类必须实现其父类(抽象类)中的所有抽象方法
C. 在接口中可以有方法实现,在抽象类中不能有方法实现
D. 一个类可以从多个接口继承,也可以从多个抽象类继承
26. (单选题)多态是指两个或多个不同对象对于同一个消息做出不同响应的方式。C#中的多态不能通过___________实现。
A. 接口
B. 抽象类
C. 虚方法
D. 密封类
27. (单选题)分析下列程序中类MyClass的定义:
class BaseClass
{
public int i;
}
class MyClass:BaseClass
{
public new int i;
}
则下列语句在Console上的输出为_______________。
MyClass y = new MyClass();
BaseClass x = new BaseClass();
x.i = 100;
Console.WriteLine("x.i={0},y.i={1}",x.i,y.i);
A. 0,0
B. 100,100
C. 0,100
D. 100,0
28. (单选题)在接口和类的区别中,正确的是________________。
A. 类可以继承,而接口不可以
B. 类不可以继承,而接口可以
C. 类可以多继承,而接口不可以
D. 类不可以多继承,而接口可以
29. (单选题)在C#中定义以下IPlay接口,实现此接口的代码正确的是___________。
interface IPlay
{
void Play();
void Show();
}
A.
class Teacher:IPlay
{
void Play(){ //省略部分代码 }
void Show(){ //省略部分代码 }
}
B.
class Teacher:IPlay
{
public string Play(){ //省略部分代码 }
void Show(){ //省略部分代码 }
}
C.
class Teacher:IPlay
{
void Play();
void Show(){ //省略部分代码 }
}
D.
class Teacher:IPlay
{
public void Play(){ //省略部分代码 }
public void Show(){ //省略部分代码 }
}
30. (单选题)以下程序的输出结果是____________。
using System;
namespace aaa
{
public class Vehicle
{
private int speed=10;
public int Speed
{
get{ return speed; }
set
{
speed=value;
Console.WriteLine("禁止驶入");
}
}
}
public class NewVehicle:Vehicle
{ public NewVehicle()
{
if(this.Speed>=20) Console.Write("机动车!");
else Console.Write("非机动车!");
}
}
public class Program
{
public static void Main()
{
NewVehicle tong=new NewVehicle();
tong.Speed=30;
}
}
}
A. 禁止驶入非机动车!
B. 非机动车!禁止驶入
C. 禁止驶入机动车!
D. 机动车!禁止驶入
31. (单选题)以下程序的输出结果是____________。
using System;
namespace aaa
{
public class Person
{
private int age=0;
public int Age
{
get{ return age; }
set
{ if(value>=18) Console.WriteLine("成年人");
else Console.WriteLine("非成年人");
age=value;
}
}
}
public class People:Person
{
public People()
{
Console.Write("不得入内");
}
}
public class Program
{
public static void Main()
{
People wang=new People();
wang.Age=25;
}
}
}
A. 非成年人不得入内
B. 成年人不得入内
C. 不得入内非成年人
D. 不得入内成年人
32. (单选题)以下关于静态方法的说法,不正确的是______________。
A. 静态方法不对特定实例进行操作
B. 静态方法只能直接访问静态成员
C. 在静态方法在引用this会导致编译时错误
D. 静态方法通过类的实例来访问
33. (单选题)以下关于实例方法的说法,不正确的是__________________。
A. 实例方法通过类来访问
B. 实例方法对类的某个给定的实例进行操作
C. 实例方法能够访问静态成员和实例成员
D. 在调用实例方法的实例上,可以通过this显式地访问该实例
34. (单选题)静态方法不能访问___________________。
A. 同类的静态字段
B. 同类的实例字段
C. 另一个类中的静态字段
D. 另一个类中的实例字段,但必须先创建一个该类的对象,再通过对象名调用
35. (单选题)以下关于构造函数的说法,不正确的是________________。
A. 构造函数的名称与类名相同
B. 构造函数不能声明返回类型(也不能使用void),也不能返回值
C. 构造函数只能声明为public类型
D. 创建对象时不能显式地调用构造函数
36. (单选题)以下关于静态构造函数的说法,不正确的是___________。
A. 静态构造函数用于实现初始化实例或对象所需的操作
B. 静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作
C. 类的静态构造函数在给定程序中至多执行一次
D. 静态构造函数既没有访问修饰符,也没有参数
37. (单选题)以下关于析构函数的说法,正确的是________________。
A. 析构函数没有修饰符,没有返回值类型,但是可以有参数
B. 无法继承析构函数,但是可以重载析构函数
C. 一个类只能有一个析构函数
D. 必须显式调用析构函数来销毁类的实例
38. (单选题)以下关于静态成员的说法,不正确的是________________。
A. 静态成员属于类,被这个类的所有实例所共享
B. 静态成员必须通过类名来引用
C. 静态函数代码体内既可以直接引用实例成员,也可以直接引用类的静态成员
D. 创建了一个类的多个实例时,其静态字段在内存中占用同一存储区域,即永远只有一个副本
39. (单选题)调用方法结束后,_____________不再存在。
A. 值传递的形式参数及其值
B. 引用传递的实际参数及其值
C. 用ref修饰的参数及其值
D. 用out修饰的参数及其值
40. (单选题)在静态方法中不能直接使用________________。
A. 静态字段
B. 实例字段
C. 值传递参数
D. 引用传递的参数
41. (单选题)调用方法传递参数时,形式参数和实际参数的_____________必须匹配。
A. 类型
B. 名称
C. 地址
D. 访问修饰符
42. (单选题)以下关于params参数的说法,不正确的是_____________。
A. 形参数组必须位于该列表的最后
B. 形参数组必须是一维数组类型
C. params修饰符可以用out修饰
D. params一定是引用传递的参数
43. (单选题)已知类MyOwnClass,下面_____________是合法的构造函数的函数头。
A. public static MyOwnClass(){ }
B. public void MyOwnClass(){ }
C. public int MyOwnClass(){ }
D. public MyOwnClass(){ }
44. (单选题)当没有定义访问修饰符时,类的成员的默认访问修饰符为_________________。
A. private
B. public
C. protected
D. internal
45. (单选题)访问修饰符protected internal的可访问性是___________。
A. 访问不受限制
B. 程序集的派生类
C. 程序集和所有本类的派生类
D. 仅限于本类
46. (单选题)以下关于继承的说法,正确的是_____________。
A. 继承可以避免代码复制和相关的代码维护等问题
B. C#语言一个子类可以继承多个基类(多重继承)
C. C#语言不允许实现多个接口
D. 子类可以继承父类的方法,但不能重新改写父类的方法
47. (单选题)以下关于密封类的说法,正确的是________________。
A. 密封类可以用作基类
B. 密封类可以是抽象类
C. 密封类永远不会有任何派生类
D. 密封类或密封方法可以重写或继承
48. (单选题)以下关于this 关键字和base关键字的说法,不正确的是____________。
A. this 关键字用于引用类的当前实例
B. base关键字用于从派生类中访问基类的成员
C. 静态成员函数中不能使用this关键字
D. 静态成员函数中可以使用base关键字
49. (单选题)以下关于接口的说法,不正确的是__________________。
A. 接口不能实例化
B. 接口中声明的所有成员隐式地为public和abstract
C. 接口默认的访问修饰符是private
D. 继承接口的任何非抽象类型都必须实现接口的所有成员
50. (单选题)以下关于接口的说法,正确的是____________。
A. 接口成员可以包含常量、字段、运算符、实例构造函数、析构函数或类型
B. 接口成员允许包含运算符重载
C. 接口成员可以包含静态成员
D. 接口成员声明中不允许包含abstract、public、protected、internal、private、virtual、override或static等修饰符
51. (单选题)派生类要访问基类的成员,可以使用关键字____________。
A. base
B. this
C. out
D. external
52. (单选题)virtual关键字不可以修饰__________________。
A. 静态字段
B. 属性
C. 索引器
D. 事件
53. (单选题)虚方法可以使用如下________________修饰符。
A. public virtual
B. public abstract virtual
C. virtual abstract
D. virtual override
54. (单选题)以下_____________可以成为接口成员。
A. 索引器
B. 常量
C. 字段
D. 析构函数
55. (单选题)下列关于事件的说法中,不正确的是________________。
A. 事件是发送(生产)者的类中的成员
B. 事件是接收(消费)者的类中的成员
C. 事件可以是实例的,也可以是静态的
D. 事件是一种类的对象,可以包含多个成员
56. (单选题)下列关于事件的说法中,正确的是______________。
A. 在静态事件的访问器中不可以用this来访问
B. 在实例事件的访问器中可以用this来访问
C. 在静态事件和实例事件的访问器中都可以用this来访问
D. 在静态事件和实例事件的访问器中都不可以用this来访问