Как заставить MonoDevelop распознавать имя синтаксиса из C# 6.0?
Я нахожусь в MonoDevelop v5.9.6. Хотя кажется, что он поддерживает C# 6.0, редактор не распознает nameof
ключевое слово, и он помечает его красным, потому что он пытается распознать его, как если бы это был идентификатор.
Есть ли какой-нибудь хак, который я могу использовать, чтобы заставить его работать в редакторе, не нарушая компиляцию?
1 ответ
Этот хак работает:
// hack to make MonoDevelop recognize nameof syntax from C#6.0
using nameof = System.Func<string>;
Редактор распознает его как "возвращающий строку" и не выдает никаких ошибок при использовании с аргументом, как, например, nameof(object.Equals)
,
Когда я нажимаю Ctrl+Shift+ Пробел, чтобы показать подпись вызова, VSCode игнорирует ее, а MonoDevelop показывает это:
VSCode (который поддерживает синтаксис nameof) также не жалуется на это. Лексер признает nameof
как ключевое слово (красным), но идентифицирует его как делегат при наведении курсора.
В любом случае я не получаю никаких ошибок.
Что еще более интригующе, компиляторы (как Mono, так и VS) просто игнорируют using
инструкция, а также принять использование nameof
, который работает нормально.
Теперь следующий вопрос будет... почему, хотя? Почему компиляторы не будут жаловаться на это?