Литеральное поле используется для констант времени компиляции.Он связан с классом (аналогично полю "static const").В вашем примере aConstant
- это нестатическое поле const (на основе экземпляра) - поэтому вы не можете инициализировать его во время объявления (оно будет инициализировано в списке инициализации ctor).
Разница между литеральными и статическими константными полями состоит в том, что ссылающиеся сборки не могут использовать статические константные поля в качестве констант времени компиляции, в то время как литералы могут.Однако в той же сборке статические константы могут использоваться в качестве констант времени компиляции.
FYI, литерал эквивалентен константе C #.initonly эквивалентно C # только для чтения.