Sobre la ‘@’, el ‘&’ y otros "escapes"

En un reciente artículo,


    http://geeks.ms/blogs/rfog/archive/2007/02/19/el-uso-on-de-la-algarroba-dentro-de-un-programa-escrito-en-c.aspx,


mi buen amigo RFOG escribía sobre la posibilidad de utilizar en C# el carácter ‘@’ como prefijo delante de una palabra reservada, para indicar que ésta debe ser tratada como un identificador “normal”. Augusto Ruiz comentaba, correctamente, que la utilidad del uso de la ‘@’ delante de las palabras reservadas radica en que permite referirse desde C# a una clase, propiedad, método, etc. creada en otro lenguaje con un nombre que coincide con el de una palabra reservada de C#. Asimismo, indicaba que en Visual Basic para lograr ese efecto se encierra la palabra reservada entre corchetes.


Me imagino que todo lenguaje .NET que se precie debe tener algún mecanismo similar, dado el énfasis que hace la plataforma en que sea posible utilizar el código escrito en otros lenguajes. Por ejemplo, en Delphi/Object Pascal .NET el papel de la ‘@’ lo juega el ‘&’.


Un ejemplo de situación en la que la existencia de estos caracteres de “escape” es, cuando menos, sumamente útil, es la que sufrí tiempo atrás y me vino a la mente cuando leí el post de Rafa. Como todo el mundo conoce, la propiedad mediante la cual se representa al destinatario del mensaje de correo en las clases System.Web.Mail.MailMessage y System.Net.Mail.MailMessage se llama “To“. Con C# y VB no hay ningún problema, pero… ¡to es una palabra reservada de Pascal! (recuerde el típico bucle for i := 1 to 10 do Console.WriteLine(i);). Pascal además no distingue mayúsculas de minúsculas, así que cada vez que en Delphi .NET se quiere especificar el destinatario de un correo electrónico, no queda más narices que escribir:


    miMensaje.&To := ‘sleepless@seattle.com’;


 

Octavio Hernandez

Desarrollador y consultor en tecnologías .NET. Microsoft C# MVP entre 2004 y 2010.

3 comentarios en “Sobre la ‘@’, el ‘&’ y otros "escapes"

  1. Buena aplicación, sí señor, je je. Ya me imaginaba yo que si lo lleva por algo será.

    La ventaja del C++/CLI es que las palabras reservadas son posicionales, y si hay una palabra reservada en el lugar de una variable, es que es una variable (ya lo leímos y tradujimos en el Sutter), y no tiene esos problemas…

    De lo que no me acuerdo es en C++ nativo…

  2. Rafa,

    Creo que C++ nativo no tiene nada de eso. Eran otros tiempos…

    Migue,

    Quería algo que tuviese que ver con MS sin mencionarlo, además era la 1 de la mañana… Salió por asociación de ideas 🙂

    A ver si nos vemos pronto.

    Slds – Octavio

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *