Ответ 1
Это не контролируется атрибутами. Это неотъемлемая особенность отладчика.
Основной причиной этой функции является предотвращение нежелательной оценки функций пользователем. Func Evals являются опасной операцией в отладчике и могут привести к значительным замедлениям или повреждению состояния программы. Отладчик проявляет большую осторожность, чтобы удостовериться, что он непреднамеренно выполняет дополнительные функции func evals, которые могут ухудшить ваш отладочный опыт.
В случае, когда в окне watch/locals/auto есть элемент, который может вызвать func eval, и отладчик не считает, что функция func eval должна произойти, значение будет серым, а кнопка обновления появится в значение столбца. Нажатие на эту кнопку сообщает отладчику: "Нет, я действительно хочу оценить это выражение".
Есть много причин, почему это происходит в отладчике. Наиболее вероятны следующие 2.
Неявная оценка свойства отключена
Инструменты → Отладчик → Параметры → Включить оценку неявного имущества
Если это значение не отмечено, вы сообщаете отладчику, пожалуйста, не делайте автоматическую оценку свойств. Свойства под капотом - это просто вызовы функций. Они обычно безопаснее, чем обычные вызовы функций, но не всегда.
Но вы все равно можете заставить свойства оценивать, введя их непосредственно в окно просмотра. Если вы наберете 2 в строке, первое значение станет "устаревшим". Это связано с тем, что при вводе второго выражения в окне просмотра все остальные выражения будут переоценены. Зачем? Поскольку акт оценки любого выражения мог бы изменить результаты других.
Поскольку неявный func eval отключен, первое свойство не будет автоматически оцениваться, и вы должны его принудительно.
Func Eval и Step
Если вы добавите выражение в окно просмотра, которое выполняет оценку функции, а затем выполните операцию шага, значение будет "занесено" в окно просмотра.
Это делается по многим причинам, но одна из самых влиятельных причин - это шаг за шагом. Для пользователя очень часто набирать много выражений в окне просмотра, и это определенно не редкость для оценки функции. По одному они не очень медленны. Но представьте, что вы пытаетесь быстро пройти через какой-то код, и у вас было 10 func evals в окне часов. Это может быстро скомпенсировать и значительно снизить уровень вашего опыта. Таким образом, func evals автоматически не переоцениваются.