c# – 70-536考试中的多播代表?

我正在阅读70-536考试的一些考题,一个开发人员在他的博客上发布的实际问题已经出现在我的考试题目中.我不记得他的回答是什么……但下面是一个问题:

您需要编写一个接受DateTime参数并返回bool的多播委托
值.您应该使用哪个代码段?

答:公共委托int PowerDeviceOn(bool,DateTime)

B:公共委托bool PowerDeviceOn(Object,EventArgs)

C:public delegate void PowerDeviceOn(DateTime)

D:公共代表bool PowerDeviceOn(DateTime)

答案是A.

有人可以解释一下原因吗?因为我已经对此做了一些研究
一段时间以前的问题,所以我确信它是C,显然现在正在寻找
回答这个问题很清楚,我没有正确阅读.我确信
之前我见过同一个,所以我跳到了最明显的一个.

这个问题的变体:

您需要编写一个接受DateTime参数的多播委托.
您应该使用哪个代码段?

答:公共委托int PowerDeviceOn(bool,EventArgs)

C:public delegate void PowerDeviceOn(DateTime)

D:公共代表bool PowerDeviceOn(DateTime)

现在这是这个问题的另一个变种,它仍然有相同的虚假样本答案,因为他们仍然善于将考试者甩掉.请注意如何通过简单地保持样本答案相同并通过删除问题文本的一小部分,答案是C而不是A.

这个变化没有正式答案,因为我只是用考试问题作为底板来构思它.答案肯定是C.这一次很容易看出为什么C是正确的,但是第一个问题我有一个问题,但是你知道在通过考试时不够好.

解决方法

这不是一个措辞很好的问题.多播委托是指将单独的委托合并为一个委托:
delegate int Foo();
Foo a = () => 5;
Foo b = () => 9;
Foo c = a + b; // c is a multicast delegate

当你调用c时,它会调用a,然后调用b.它返回调用的最后一个委托的返回值,因此c的返回值为9.

在我看来,答案应该是

public delegate void PowerDeviceOn(DateTime d,CancelEventArgs e)

如果委托指向的方法之一想要告诉你“假”,则应将e.Cancel设置为true.委托不能只返回一个布尔值,因为那样你只能获得最后一个委托的答案.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


c语言数组越界会怎么样
c语言指针怎么等于数组
c语言数组怎么存入文字
c语言中怎么显示数组
c语言数组元素怎么选
c语言数组怎么累加
c语言数组符号怎么输入
c语言怎么用长数组
c语言数组函数怎么输入
c语言数组怎么去掉差异
c语言怎么求解数组
c语言数组怎么用变量
c语言怎么申明数组
c语言怎么控制数组
c语言怎么计算数组长度
c语言数组怎么插星号
c语言数组怎么加长度
c语言中怎么输出数组
c语言怎么记住数组边界
c语言数组怎么输入符号