当前位置:文档之家› C#面向对象编程-委托和事件习题

C#面向对象编程-委托和事件习题

C#面向对象编程-委托和事件习题
C#面向对象编程-委托和事件习题

C#面向对象编程-委托和事件

1.一个委托在某一时刻()指向多个方法。

a)可以

b)不可以

2.将事件通知其他对象的对象称为()

a)发布方

b)订户

c)通知方

3.以下的C#代码:

using System;

using System.Theading;

class App{

Public static void Main()

{

Timer timer = new Timer(new TimerCallback(CheckStatus),null,0,2000);

Console.Read();

}

Static void CheckStatus(Object state)

{

Console.WriteLine(“正在运行检查……”);

}

}

在使用代码创建定时器对象的时候,同时指定了定时器的事件,程序运行时将每隔两秒钟打印一行“正在运行检查……”,因此,TimerCallback是一个()选一项

a)委托

b)结构

c)函数

d)类名

4.阅读以下C#代码

Namespace tevent

{

public delegate void notify5();

class eventTest

{

public void Raise5(int I)

{

if(I%3==1)

Got5();

}

public event notify5 Got5;

}

class Handlers

{

public static void Method1()

{

Console.WriteLine("时间处理完成");

}

}

class class10

{

static void Main(String[] args)

{

eventTest eObj=new eventTest();

eObj.Got5+=new notify5(Handlers.Method1);

for(int cnt=0;cnt<5;cnt++)

{

int y=cnt*2+1;

eObj.Raise5(y);

}

Console.WriteLine();

}

}

代码允许的结果为()。(选择一项)

A)控制台窗口不能出任何信息。

B)在控制台窗口输出“时间处理完成”1次

C)在控制台窗口输出“时间处理完成”2次

D)在控制台窗口输出“时间处理完成”5次

5.一个委托在某一时刻()指向多个方法。

A.可以

B.不可以

6.将事件通知其他对象的对象称为()

A.发布方

B.订户

C.通知方

7.声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是()

A. void myCallBack(int x)

B. int receive(int num)

C. string receive(int x)

D. 不确定的

8.C#中,关于事件的定义正确的是()。

a)private event OnClick();

b)private event OnClick;

c)public delegate void Click();public event Click void OnClick();

d)public delegate void Click();public event Click OnClick;

1>在C#中,下列代码的运行结果是().

Public delegate void BuyTicketDelegate(string num);

Public class Student

{

Public event BuyTicketDelegate btEvent;

Public Student(string num)

{

btEvent+= new BuyTicketDelegate(this.BuyTicket);

}

Public void ShowNum(string num)

{

btEvent(num);

}

Private void BuyTicket(string num)

{

Console.WriteLine(“我要买”+num+”次车票”);

}

Static void Main()

{

Console.WriteLine(“创建学生对象”);

Student stu = new Student(“TI”);

Console.WriteLine(“创建完毕”);

Stu.ShowNum(“TI”);

}

}

a) 创建学生对象创建完毕

b) 创建学生对象我要买TI次车票创建完毕

c) 创建学生对象创建完毕我要买TI次车票

d) 我要买TI次车票创建学生对象创建完毕

7>以下关于C#代码的说法正确的是().

Public delegate void SendMailDelegate(string address);

Public class Carrier{

Public event SendMailDelegate sendEvent;

Static void Main(){

Carrier t = new Carrier(); //1

t.sendEvent+= new SendMailDelegate(t_sendEvent);//2

t.sendEvent(“北大青鸟啊博泰克”); //3

t_sendEvent(“北大青鸟啊博泰克”); //4

}

Private static void t_sendEvent(string address){

Console.WriteLine(“将信寄往”+address);

}

}

a)代码正确编译和运行,并输出一次“将信寄往北大青鸟阿博泰克”;

b)代码正确编译和运行,并输出两次“将信寄往北大青鸟阿博泰克”;

c)代码将出现编译错误,

d)代码将编译正确,但运行时出现异常。

9>在C#中,假如有一个名为”MessageDelegate”的委托,下列能够正确定义

一个事件的是()

a)public delegate MessageDelegate messageEvent

b)public MessageDelegate messageEvent

c)private event MessageDelegate(messageEvent)

d)public event MessageDelegate messageEvent;

46) 在C#中,下列代码的运行结果是()(选择一项)

Using System;

Delegate void D(int i);

Class P{

Public static void Main(){

V(new D(R));

Console.Write(0);

}

Public static void V(D A){

A(21);

}

Public static void R(int i){

Console.write(i.ToString());

}

}

a)代码中存在错误,delegate void D(int i);不能定义在命名空间或者类之外

b)代码中存在错误,代码行V(new D(R));使用委托错误

c)程序正常运行,输出为0

d)程序正常运行,输出为210

相关主题
文本预览
相关文档 最新文档