我正在寻找在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
但对于var
,dynamic
,List
,Dictionary
等,上述代码返回错误的结果。
有没有办法在运行时识别.net关键字而不是在列表中列出关键字?
string[] _keywords = new[] { "List", "Dictionary" };
答案 0 :(得分: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);
}
}
}
所以你的前提是错的。您可以在短名单中查找keywords。仅仅因为某些东西具有意义并不意味着它以任何方式保留"保留"。
不要让在线语法突出显示让您感到困惑。如果要查看正确的突出显示,请将其复制并粘贴到Visual Studio中。
答案 1 :(得分:3)
正如nvoigt所解释的那样,以编程方式确定字符串是否为关键字的方法实际上是正确的。要完成,(在检查Reflector之后)应该是:
bool IsKeyword(string s)
{
var cscp = new CSharpCodeProvider();
return s != null
&& CodeGenerator.IsValidLanguageIndependentIdentifier(s)
&& s.Length <= 512
&& !cscp.IsValidIdentifier(s);
}
(VB.NET版本需要1023并检查“_”。)