Thursday, October 26, 2006

Caracteres de escape para usar palabras reservadas como nombres de variables en .NET

Este articulo es en referencia al articulo de Jean-Paul: Nombrando variables usando el tipo de la variable como nombre (truco inservible #1).(articulo en ingles)

Pues bien, resulta que el truco no es tan inservible, solo tenemos que ver mas alla de nuestra nariz.

en la documentacion MSDN en español (que creo que mucha gente todavia no sabe de este gran recurso) encontramos el siguiente texto:

Las palabras clave son identificadores predefinidos reservados que tienen un significado especial para el compilador. No se pueden utilizar como identificadores en un programa a menos que incluyan el carácter @ como prefijo. Por ejemplo, @if es un identificador válido pero if no, por ser una palabra clave.

.NET vino a resolver lo que era uno de los problemas mas grandes en el area de desarrolo, esto es (o era) el poder interactuar facilmente con codigo escrito en otro lenguaje, esto se resuelve en .NET porque los compiladores convierten el codigo a Lenguaje Intermedio.

Hoy en dia uno puede escribir codigo en cualquier lenguaje de .NET y usar el codigo (las librerias generadas) en cualquier otro lenguaje de .NET; esto crea un problema, ya que las palabras reservadas en un lenguaje pueden (y muchas veces es asi) no significar nada en otro lenguaje, por ejemplo podrias estar programando en C# y usar una variable begin, la cual es una palabra reservada en Delphi, y entonces cuando alguien quisiera usar tu codigo C# desde Delphi, no podrian; para resolver este problema los lenguajes deben (para su propio "bienestar") implementar algun tipo de caracter de escape que permita usar palabras reservadas como nombres de variables en caso de que estes usando codigo escrito en otro lenguaje en el que hallan declarado una variable con el nombre de una palabra reservada en el lenguaje que estas usando (uff, no se si se entendio esto)

en C# usamos el prefijo @

string @while = "something"
Console.WriteLine(@while);

en Delphi usamos el prefijo &

&begin:Integer;
begin
  &begin := 10;
  Console.WriteLine(&begin);

en VB.NET encerramos la palabra reservada en brackets

Dim [Dim] = 20
Console.WriteLine([Dim])

obviamente (es una de las primeras cosas que se aprenden) uno no usa palabras reservadas como nombres de variables cuando estas en el lenguaje mismo, pero si tienen un uso valido cuando empezamos a interactuar con codigo escrito en otros lenguajes, si no tuvieramos esos caracteres de escape, mucho codigo no funcionaria

Si alguien sabe de los caracteres de escape para otros lenguajes de .NET dejenme un comentario para actualizar el articulo

p.d. despues de escribir esto, me encontre con que Jeff les llama escaped identifiers

No comments: