如何使MonoDevelop从C#6.0识别nameof语法?

时间:2018-07-21 15:27:48

标签: c# monodevelop c#-6.0 nameof

我正在使用MonoDevelop v5.9.6。尽管它似乎支持C#6.0,但该编辑器无法识别nameof关键字,并且将其标记为红色,因为它试图将其识别为标识符。

  

nameof appears red

在没有以某种方式破坏编译的情况下,我可以使用任何技巧使其在编辑器中工作吗?

1 个答案:

答案 0 :(得分:1)

此技巧有效:

// hack to make MonoDevelop recognize nameof syntax from C#6.0
using nameof = System.Func<string>;

编辑器将其识别为“返回字符串”,并且与诸如nameof(object.Equals)之类的参数一起使用时不会出现任何错误。

  

syntax is recognixed

当我 Ctrl + Shift + Space 显示调用的签名时,VSCode会忽略它,而MonoDevelop显示以下内容:

  

CTRL+SHIFT+SPACE shows Invoke

VSCode(支持nameof语法)也没有抱怨。词法分析器将nameof识别为关键字(红色),但是当我将鼠标悬停时,将其识别为委托。
无论如何我都不会出错。

  

VSCode recognizes it too

更令人着迷的是,编译器(Mono和VS)只是忽略了using指令,还接受了nameof的用法,它们正常工作。

现在,followup question将是...为什么?编译器为什么不抱怨呢?