Почему вам нужны частичные методы в C #? Можно ли использовать события для достижения той же цели? - PullRequest
11 голосов
/ 02 сентября 2010

Я читал книгу «Apress Pro LINQ: Language Integrated Query in C #» и натолкнулся на частичные методы, но я действительно не понимаю, зачем они нужны.

Я думаю, что примеры в книге (свойства до и после изменения) могут быть реализованы с использованием событий. Так какое-нибудь объяснение?

Ответы [ 4 ]

21 голосов
/ 02 сентября 2010

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

Однако у частичных методов есть преимущества перед событиями, в частности

  • Частичные вызовы методов полностью удаляются из сгенерированного IL, если нет реализации.Это не может быть сделано с событиями.
  • Конструкция частичных методов состоит в том, чтобы решить проблему, когда есть 1 поставщик крючка и 1 потребитель.События предназначены для провайдера модели 1 с N потребителями и накладными расходами, которые идут с таким дизайном
  • Нет проблем с заказом (кто идет первым).В случае событий вы должны убедиться, что код, который подписывается на событие, запускается до того, как дизайнер сгенерирует код, который вызывает событие.Это не всегда возможно, если, скажем, дизайнер генерирует конструктор.Частичные методы не имеют такой проблемы.
3 голосов
/ 02 сентября 2010

Они не «нужны», но желательны для крупномасштабных приложений.Широкое использование событий приводит к созданию анти-паттерна Smart UI, в котором бизнес-логика тесно связана с пользовательским интерфейсом, тогда как частичные функции позволяют вам лучше разделять ваши проблемы.

Вот ссылка на программирование MSDN C #руководство по частичным методам, а также.http://msdn.microsoft.com/en-us/library/wa80x488.aspx

2 голосов
/ 02 сентября 2010

Компилятор удалит вызовы к частичным методам, если нет реализаций.С альтернативой событий слушатели должны были бы быть проверены во время выполнения (они также должны были бы быть сохранены, и т. Д.).Это позволяет частичным методам быть более производительными, особенно когда есть много потенциальных «событий» и только у немногих зарегистрированы «слушатели».

0 голосов
/ 02 сентября 2010

Частичные методы определяются во время компиляции, события во время выполнения.Так что это разные вещи.

Частичные методы были представлены на рисунке, чтобы расширить существующие классы, которые вы не можете контролировать (часть фреймворка или автоматически сгенерированные)

Надеюсь, это поможет

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