Одна из самых полезных функций С# 6 - nameof
, которая позволяет программисту эффективно исключить использование магические строки.
В документации, nameof
возвращает строку:
Используется для получения простого (неквалифицированного) имени строки для переменной, типа или члена.
Это работает отлично с явным вводом текста в следующем примере кода:
string magicString = nameof(magicString);
Однако при использовании неявной типизации с ключевым словом var
:
var magicString = nameof(magicString);
компилятор выдает ошибку:
Нельзя использовать локальную переменную magicString до ее объявления
Затем я немного экспериментировал с С# Interactive, доступным в Visual Studio. Опять же, первый пример работал отлично, но на втором примере на этот раз была сделана другая ошибка:
error CS7019: Тип "magicString" не может быть выведен, поскольку его инициализатор прямо или косвенно ссылается на определение.
Выражение nameof
явно возвращает строку, поэтому почему компилятор неявно вводит его при использовании с инициализированной переменной?