您需要编写一个接受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.委托不能只返回一个布尔值,因为那样你只能获得最后一个委托的答案.