Подождите, пока асинхронная задача завершит блок завершения, прежде чем вернуться в делегат приложения

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

Наиболее заметная цитата в конце страницы, связанная с описываемой вами ситуацией, такова:

  1. Вызывается конструктор базового класса. Этот шаг повторяется рекурсивно, так что сначала формируется корень иерархии, а затем следующий производный класс и т. Д. До тех пор, пока не будет достигнут наиболее производный класс.
  2. Инициализаторы членов вызываются в порядке декларации. Вызывается тело конструктора производного класса.
blockquote>

Итак, как вы показали в своем примере, базовый класс инициализируется, затем каждый из следующих классов и, наконец, инициализируются переменные-члены.

Но, как упоминалось в Билле, это не очень хорошая практика. Следуйте тому, что говорит Билл. У него больше репутации, чем у меня.

EDIT: для более полного ответа см. этот ответ Джона Скита . Ссылка в этом ответе сломана, и только PDF-копию JLS можно найти AFAIK. Здесь - копия JLS в формате .pdf. Соответствующий раздел - Раздел 8.8.7.1. Существует объяснение того, что в этом ответе используется порядок вызова конструктора.

34
задан Matthew Quiros 7 April 2014 в 14:20
поделиться