Как заставить 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 показывает это:

CTRL + SHIFT + ПРОБЕЛ показывает Invoke

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

VSCode распознает это тоже

Что еще более интригующе, компиляторы (как Mono, так и VS) просто игнорируют using инструкция, а также принять использование nameof, который работает нормально.

Теперь следующий вопрос будет... почему, хотя? Почему компиляторы не будут жаловаться на это?

Другие вопросы по тегам