我正在为70-536考试准备一些试题,一个开发者在他的博客上发布的一个实际问题突然出现在我的试题中。我不记得他的回答是什么…但问题是:
您需要编写一个接受datetime参数并返回bool的多播委托。
价值。您应该使用哪个代码段?
答:public delegate int PowerDeviceOn(bool, DateTime)
B:public delegate bool PowerDeviceOn(Object, EventArgs)
C:public delegate void PowerDeviceOn(DateTime)
D:public delegate bool PowerDeviceOn(DateTime)
答案是A。
有人能解释一下原因吗?因为我已经做了一些研究
刚才的问题,所以我确定是C,很明显现在看起来
回到这个问题上,很明显我没有正确阅读。我确信
我以前见过同一个,所以我跳到了最明显的一个。
关于这个问题的一个变体:
您需要编写一个接受datetime参数的多播委托。
您应该使用哪个代码段?
答:public delegate int PowerDeviceOn(bool, DateTime)
B:public delegate bool PowerDeviceOn(Object, EventArgs)
C:public delegate void PowerDeviceOn(DateTime)
D:public delegate 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)
如果委托所指向的方法之一想告诉您“false”,则应将
e.Cancel
设置为true。委托不能只返回布尔值,因为这样只能得到最后一个委托的答案。