Я смотрю на эту страницу, где рассказывается об активизации событий. Здесь, для синтаксиса С#, он проверяет, является ли событие нулевым, а затем вызывает событие. Почему для vb.net не то же самое?
public event CommandEventHandler ProductSelectionChanged;
В некотором методе это называется.
if (ProductSelectionChanged != null)
{
ProductSelectionChanged(this, e);
}
В vb это событие. Почему разница. Кроме того, на этой странице рассказывается об использовании этого
Protected WithEvents products As DisplayProductSelection.
Я пробовал это без этого, и событие было обработано. Это хорошая практика, чтобы использовать это?
Оператор VB.Net RaiseEvent
выполняет проверку Nothing
(null
) для вас. Это не делается в С#, и его нужно обрабатывать вручную. Обратите внимание, что многие другие языки, такие как F # и C++/CLI, также не требуют ручной проверки нуля.
Это часто бывает лучше, за редким исключением, если вы хотите иметь специальную логику, которая обрабатывает случай, когда событие не имеет подписчиков (т.е.: И else
ветвь), и в этом случае команда VB.Net имеет блог об одном подходе к обработке этот сценарий.
Handles