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