是否有一种编程方式来识别.Net保留字?

DSP*_*DSP 16 .net c# reserved-words

我正在寻找在VS 2015中以编程方式阅读.Net,C#保留关键词.

我得到了在[link] [1]中读取C#保留字的答案.

CSharpCodeProvider cs = new CSharpCodeProvider();
var test = cs.IsValidIdentifier("new"); // returns false
var test2 = cs.IsValidIdentifier("new1"); // returns true
Run Code Online (Sandbox Code Playgroud)

var,dynamic,List,Dictionary等上面的代码返回错误的结果.

有没有办法在运行时识别.net关键字而不是列出列表中的关键字?

string[] _keywords = new[] { "List", "Dictionary" };
Run Code Online (Sandbox Code Playgroud)

nvo*_*igt 32

这是一个非常好的C#程序:

using System;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            int var = 7;
            string dynamic = "test";
            double List = 1.23;

            Console.WriteLine(var);
            Console.WriteLine(dynamic);
            Console.WriteLine(List);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以你的前提是错的.您可以在短名单中查找关键字.仅仅因为某些东西具有意义并不意味着它以任何方式"保留".

不要让在线语法突出显示让您感到困惑.如果要查看正确的突出显示,请将其复制并粘贴到Visual Studio中.

  • 甚至更疯狂,你可以添加一个名为`var`的类型,然后使用它来代替类型推断. (13认同)
  • @CodesInChaos它并不疯狂 - 它完全按照设计.C#的每个连续版本都需要保持向后兼容以前的版本,因此在C#2.0中有效的代码必须仍然在C#3.0中有效.这就是为什么`async`存在的原因 - 例如,这是确保在新编译器中编译的旧代码中不会错误解释`await`的最佳方法.添加`async`后,您有责任修复任何冲突. (11认同)