В чем разница между событиями в VB и C #? - PullRequest
8 голосов
/ 30 марта 2010

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

Спасибо

Ответы [ 5 ]

6 голосов
/ 30 марта 2010
1 голос
/ 30 марта 2010

Основным отличием является синтаксис, который используется. Внизу они используют те же самые механизмы в 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 +=, что больше похоже на оператор AddHandler VB.NET.

0 голосов
/ 30 марта 2010

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

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

0 голосов
/ 30 марта 2010

Чтение из:

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

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

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

См. Статью для остальных.

0 голосов
/ 30 марта 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...