Многоадресные делегаты на экзамене 70-536?

Я прохожу некоторые вопросы об экзамене для экзамена 70-536 и фактический вопрос, один разработчик, размещенный в его блоге, открылся в моих вопросах об экзамене. Я не могу помнить то, чем его ответ был...., но ниже вопрос:

Необходимо записать многоадресного делегата, который принимает аргумент DateTime и возвращает bool значение. Какой сегмент кода необходимо использовать?

A: 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. Какой сегмент кода необходимо использовать?

A: 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 корректен, но самый первый вопрос у меня есть подозрение, но как Вы знаете, подозрение не достаточно хорошо мимоходом экзамены.

7
задан LittleBobbyTables 27 August 2013 в 03:16
поделиться

2 ответа

Это не очень хорошо сформулированный вопрос. Многоадресный делегат - это когда вы объединили отдельные делегаты в один:

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. Делегат не может просто вернуть логическое значение, потому что тогда вы получите только последний ответ делегата.

5
ответ дан 7 December 2019 в 05:19
поделиться

Прежде всего, ] по определению, все экземпляры делегатов в .NET являются многоадресными делегатами , даже если к ним прикреплены 0 или 1 фактическая функция.

Строго говоря, единственный делегат (многоадресная рассылка является лишним), который соответствует фактическому описанию для проблемы 1, - это D. Это единственные функции, которые принимают параметр DateTime . и возвращает логическое значение .

Фактически, ответ A не соответствует требованиям явно или даже концептуально. Если бы параметр bool был параметром ref , он был бы по крайней мере способным возвращать логическое значение в вызывающий код. Как бы то ни было, вам нужно будет проверить, что возвращаемое значение было > 0 .

5
ответ дан 7 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: