Продвижение моих комментариев к ответу:
Я:
Попробуйте также записать каждое "питание" на консоль
Prankster:
C #: 100 VB.NET: 0
Я:
Как я и подозревал. Похоже, VB.Net вызывает конструктор Base перед унаследованным конструктором, и, следовательно, переменная requiredPower в VB по-прежнему равна 0, тогда как C # делает это в обратном порядке (помните, буквальная инициализация происходит в конце конструктора).
Обновление:
Я хотел найти некоторую документацию о поведении (иначе вы смотрите на поведение, которое может измениться из-под вас в любом новом выпуске .Net). По ссылке:
Конструктор производного класса неявно вызывает конструктор для базового класса
и
Объекты базового класса всегда создаются перед любым производным классом. Таким образом, конструктор для базового класса выполняется перед конструктором производного класса.
Они находятся на той же странице и могут показаться взаимоисключающими, но я предполагаю, что конструктор производного класса вызывается первым, но предполагается, что он сам вызывает базовый конструктор перед выполнением любой другой работы. Поэтому важен не порядок конструктора, а способ инициализации литералов.
Я также нашел эту ссылку , которая ясно говорит, что порядок - это производные поля экземпляра, затем базовый конструктор, затем производный конструктор.