Каково различие между событиями в VB и C#?

Я - программист VB, прокладывающий себе путь в C#. Я изучил, как создать и сгенерировать события в vb и нахожу, что он не сделан тот же путь в C#. Сделал, чтобы кто-либо столкнулся со статьей, которая поможет мне понять, как сделать события в C# и возможно объяснить, почему это отличается в VB.

Спасибо

8
задан Mike Murphy 30 March 2010 в 16:54
поделиться

5 ответов

6
ответ дан 5 December 2019 в 21:17
поделиться

Источник:

http://msdn.microsoft.com/en-us/library/aa645739 (VS.71) .aspx

Событие в C # - это способ для класса {{1 }} предоставляют уведомления клиентам этого класса, когда с объектом происходит что-то интересное . Наиболее события используются в графических пользовательских интерфейсах; как правило, классы, представляющие элементы управления в интерфейсе, имеют события, которые уведомляются, когда пользователь что-то делает с элементом управления (например, щелкает значок { Кнопку {1}}).

Однако события не обязательно использовать только для графических интерфейсов. События предоставляют обычно полезный способ для объектов сигнализировать об изменениях состояния, которые могут быть полезны для клиентов этого объекта . События являются важным строительным блоком для создания классов , которые можно повторно использовать в большом количестве различных программ.

Остальное см. В статье.

0
ответ дан 5 December 2019 в 21:17
поделиться

Основное различие заключается в используемом синтаксисе. Внизу они используют одни и те же механизмы в CLR.

Однако VB.NET предоставляет специальный синтаксис через WithEvents и Handles, позволяя вам делать:

Dim WithEvents button1 As Button

Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyButton.Click 
    ' Handle button click
End Sub

C# не предоставляет эквивалента - все события должны быть явно подписаны через event +=, что больше похоже на оператор VB.NET AddHandler.

1
ответ дан 5 December 2019 в 21:17
поделиться

Хороший краткий общий справочник по некоторым ключевым различиям в синтаксисе можно найти здесь . Найдите "события", чтобы попасть в этот раздел.

Ключевые отличия заключаются в том, что VB требует, чтобы вы использовали некоторые ключевые слова, а не сложение / вычитание, чтобы связать события, но дает вам ключевое слово обрабатывает автоматически связывает подпрограмму с событием. И при передаче делегата вы должны использовать бессмысленное ключевое слово AddressOf. (Извините за редакционную статью, но я думаю, что это ключевое слово вызывает больше путаницы, чем спасает!)

0
ответ дан 5 December 2019 в 21:17
поделиться

Разница в основном синтаксическая.

См. эту удобную справку о различиях.

Обработчик событий в VB.NET объявляется с помощью ключевого слова Handling, добавляемого к сигнатуре обработчика событий. В C# вам нужно использовать его регистрацию с помощью +=.

В VB.NET вы вызываете событие с помощью RaiseEvent, в C# вы вызываете делегат напрямую.

0
ответ дан 5 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

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