c# - ¿Hay una manera programática de identificar.Net palabras reservadas?
reserved-words (2)
Como lo explica nvoigt, su método para determinar mediante programación si una cadena es una palabra clave es efectivamente correcto. Para ser completo, (después de revisar Reflector) debe ser:
bool IsKeyword(string s)
{
var cscp = new CSharpCodeProvider();
return s != null
&& CodeGenerator.IsValidLanguageIndependentIdentifier(s)
&& s.Length <= 512
&& !cscp.IsValidIdentifier(s);
}
(La versión VB.NET necesita 1023 y una verificación de "_".)
Estoy buscando la lectura de las palabras clave reservadas de .Net, C # programáticamente en VS 2015.
Obtuve la respuesta para leer las palabras reservadas de C # en el [enlace] [1].
CSharpCodeProvider cs = new CSharpCodeProvider();
var test = cs.IsValidIdentifier("new"); // returns false
var test2 = cs.IsValidIdentifier("new1"); // returns true
Pero para var
, dynamic
, List
, Dictionary
, etc., el código anterior está dando un resultado incorrecto.
¿Hay alguna forma de identificar palabras clave .net en tiempo de ejecución en lugar de enumerar palabras clave en una lista?
string[] _keywords = new[] { "List", "Dictionary" };
Este es un programa C # perfectamente bien:
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);
}
}
}
Así que tu premisa es incorrecta. Puede encontrar las keywords buscándolas en la lista corta. El hecho de que algo tenga un significado no significa que esté "reservado" de ninguna manera.
No deje que el resaltado de sintaxis en línea lo confunda. Cópielo y péguelo en Visual Studio si desea ver el resaltado adecuado.