VB.NET: события генерируются, даже при отсутствии обработчиков событий?

Если вы можете получить position внутри анонимных реализаций, это означает, что это final. Как внутри слушателя чекбокса.

A final position вызовет расхождения между данными и пользовательским интерфейсом, потому что он не будет определяться снова. К этому моменту должен быть отстранен метод onBindViewHolder, который имеет лучшее объяснение, чем мой.

Для того, чтобы получить доступ к финальной позиции, вы можете использовать:

holder.getAdapterPosition()

Вам не нужно беспокоиться о том, что держатель был конечным, потому что держатель - это строка, и он не будет повторно создаваться. Если он утилизируется адаптером, то с ним проблем нет.

8
задан Peter Mortensen 13 February 2010 в 22:04
поделиться

3 ответа

Нет никакого волшебства, код, скрывающийся под RaiseEvent, делает точно, что Вы ожидали бы, он выполняет итерации через набор обработчиков и выполняет каждого. Издержки проверки для наблюдения являются там любыми обработчиками, тривиально, не волнуйтесь об этом.

Если Ваш РЕАЛЬНЫЙ вопрос состоит в том, чтобы "Сэкономить время, я должен проверить, что события имеют обработчики прежде, чем сгенерировать события?"... затем ответ является "Нет", Вы ничего не получите путем выполнения этого.

Кроме того, не волнуйтесь об оптимизации, если Вам не нужно к (см. эту статью в Википедии для наблюдения почему.)

Ре: вызов GetMystring().

Да, это соединяется с тем, как Вы генерируете события в C#, где Вы проверяете на существование обработчиков прежде, чем сгенерировать событие. Например:

if (MyEvent != null)
    MyEvent(GetMyString())

Хороший эксперимент между прочим :)

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

Мой собственный ответ:

В VB.NET НЕ стреляет событие, при отсутствии обработчиков, настроенных для прислушиваний к нему.

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

RaiseEvent Report(GetMyString())

Другими словами, я говорю что GetMystring функция выше не становится названной, если обработчики на самом деле не существуют.

7
ответ дан 5 December 2019 в 12:14
поделиться

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

Как примечание стороны: генерирование события без обработчиков в C# на самом деле заставляет исключение быть брошенным. VB.Net не имеет этой проблемы :)

1
ответ дан 5 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

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