Почему поля класса не могут быть var? [дубликат]

в соответствии с NPM Doc

enter image description here

Таким образом, кажется, что при запуске npm install package_name зависимость пакета должен автоматически добавляться в package.json, верно?

24
задан Backwards_Dave 9 September 2019 в 05:10
поделиться

2 ответа

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

0
ответ дан 28 November 2019 в 23:54
поделиться

Я вижу две причины:

  1. Возможно, было бы желательно сделать объявление типов в общедоступном интерфейсе явным
  2. Это сложно реализовать. Компилятор C # компилируется в несколько этапов.
    Сначала он анализирует все, кроме тел методов, поэтому он знает обо всем, что находится за пределами функциональных тел. Затем он может использовать эту информацию для индивидуальной компиляции тел методов. То, что происходит при компиляции одного тела метода, мало влияет на то, что происходит при компиляции других тел метода.
    Если бы вы могли использовать var для полей, тело выражения инициализатора поля будет влиять на тип поля и, следовательно, на многие другие методы. Так что он не очень хорошо подходит для дизайна компилятора.
2
ответ дан 28 November 2019 в 23:54
поделиться
Другие вопросы по тегам:

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