Почему существуют разные аннотации управления компонентами

Событие в .net - это назначенная комбинация метода Add и метода Remove, оба из которых ожидают определенного типа делегата. Оба C # и vb.net могут автоматически генерировать код для методов добавления и удаления, которые будут определять делегата для хранения подписки на события и добавлять / удалять переданные в делегате в / из этого делегата. VB.net также будет автоматически генерировать код (с инструкцией RaiseEvent) для вызова списка подписки тогда и только тогда, когда он не пуст; по какой-то причине, C # не генерирует последнее.

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

37
задан BalusC 25 February 2013 в 12:39
поделиться