Почему бы не проверить наличие нуля, как c #, при создании пользовательских событий в vb.net?

1

Я смотрю на эту страницу, где рассказывается об активизации событий. Здесь, для синтаксиса С#, он проверяет, является ли событие нулевым, а затем вызывает событие. Почему для vb.net не то же самое?

public event CommandEventHandler ProductSelectionChanged;

В некотором методе это называется.

if (ProductSelectionChanged != null)
{
    ProductSelectionChanged(this, e);
}

В vb это событие. Почему разница. Кроме того, на этой странице рассказывается об использовании этого

Protected WithEvents products As DisplayProductSelection.

Я пробовал это без этого, и событие было обработано. Это хорошая практика, чтобы использовать это?

  • 2
    Я не парень VB, но я верю, что RaiseEvent VB внутренне выполняет нулевую проверку для вас. Пожалуйста, поправьте меня, если это не так.
  • 1
    С кодом C # он будет работать, когда что-то подписано на событие, но вам нужна нулевая проверка, чтобы убедиться, что что-то подписано на событие, прежде чем пытаться его вызвать. Без этого это вызовет исключение.
Теги:

1 ответ

3
Лучший ответ

Оператор VB.Net RaiseEvent выполняет проверку Nothing (null) для вас. Это не делается в С#, и его нужно обрабатывать вручную. Обратите внимание, что многие другие языки, такие как F # и C++/CLI, также не требуют ручной проверки нуля.

Это часто бывает лучше, за редким исключением, если вы хотите иметь специальную логику, которая обрабатывает случай, когда событие не имеет подписчиков (т.е.: И else ветвь), и в этом случае команда VB.Net имеет блог об одном подходе к обработке этот сценарий.

  • 0
    Спасибо всем за ответы. Почему я должен добавить это? Защищенные продукты WithEvents как DisplayProductSelection. Как я уже сказал в своем вопросе, событие было обработано без этого куска кода. Каково значение этого и зачем мне его использовать?
  • 0
    @SamsonBujju См .: imar.spaanjaars.com/300/what-do-i-need-protected-withevents-for Вам это нужно, если вы хотите использовать Handles

Ещё вопросы

Сообщество Overcoder
Наверх
Меню