Два (почти) идентичны.
При определении встроенного инициализатора:
private Object MyAwesomeObject = new MyAwesomeObject();
Это произойдет до кода конструктора класса. Это часто лучше, но имеет несколько ограничений.
Настройка его в конструкторе позволяет использовать параметры конструктора для инициализации ваших членов. Часто это требуется для того, чтобы получить больше информации для учеников.
Кроме того, когда вы устанавливаете значения в своих конструкторах, вы можете использовать данные вашего класса в статическом контексте, что невозможно сделать с помощью встроенных методов. Например, если вы хотите что-то инициализировать, используя дерево выражений, это часто нужно делать в конструкторе, поскольку дерево выражений находится в статическом контексте, который не будет иметь доступа к членам вашего класса во встроенном инициализаторе членов. 1010 *