El uso de la "algarroba" dentro de un programa escrito en C#

Recientemente he comprado en Amazon el libro “THe C# Programming Language” de Hejlsberg y otros, que parece ser es el libro de cabecera del lenguaje de programación C#. Ya casi ni me acordaba, pero la mejor forma de entender un lenguaje de programación es verlo escrito en el formato BNF con pequeños comentarios aclaratorios. Así es como yo aprendí en mis tiempos mozos el lenguaje C, y el C++ no porque el libro de Stroustrup lo explica todo con palabras y ejemplos.


Nada más comenzar con el libro, hay una cosa que me ha llamado enormemente la atención, y es el uso de la arroba en el código fuente. Quizá a quien lea esto, programador avezado en las lides del C#, la resulte obvio y hasta elemental. De hecho, el uso junto a una cadena literal ya lo conocía y suelo utilizarlo muy a menudo.


La arroba delante de un literal cadena
Es sin duda el uso más común, y el más útil de los dos usos que podemos darle a la arroba dentro del código fuente, y se utiliza para interpretar literalmente el contenido de la cadena, es decir, si una cadena tiene una arroba justo antes de las comillas de apertura, la cadena se interpretará literalmente sin prestar atención a códigos de escape, saltos de línea, o cualquier otro símbolo que está contenga y que pudiera hacer protestar al compilador o hacer que éste interpretara de forma especial dichos símbolos. Pongamos un ejemplo sacado del libro:



string a= “Hello t World”;
string b=@”Hello t World”;


Estas dos lineas de codigo harán que las variables contengan (o más bien apunten a un área de la memoria que contenga, ya que son referencias a un objeto):



a -> Hello     World
b -> Hello t World


La forma para un literal cadena literal (valga la redundancia) viene como anillo al dedo para especificar rutas a ficheros sin tener que utilizar los tendente a error códigos de escape, y un uso más avanzado podría ser la creación de código fuente (es decir, tener un programa que genere codigo fuente para hacer otro programa).


La arroba delante de una palabra reservada
Este es el uso que me ha llamado enormemente la atención. Hablando básicamente podemos tener un nombre de variable o cualquier otro elemento dentro de un código fuente que sea una palabra reservada, pero sin serlo. Es decir, el siguiente código fuente es perfectamente válido:



class @class
{
    public static void @static(bool @bool)
    {
        if(@bool)
            System.Console.WriteLine(“true”);
        else
            System.Console.WriteLine(“false”);
    }
}


Este código aparece al final de la página 53 del libro y nos dice que tenemos una clase llamada “class” con un miembro estático llamado “static” que recibe una variable de tipo lógico con el nombre “bool”.


Personalmente no encuentro utilidad a esta característica, ni siquiera para metaprogramación, y lo único que hacen es ofuscar el codigo, pero está presente y se puede utilizar.


Más curiosidades
¿Algún programador de C de los de la vieja escuela recuerda los “trigraphs”? Supongo que sí, que no seré yo el único dinosaurio que usaba editores para el codigo fuente que no permitían introducir símbolos especiales. Borland tenía una utilidad para que, una vez escritos dichos trigráficos con un editor normal, fueran traducidos a los símbolos adecuados para que el compilador no protestara. Bueno, pues el C# trae un rico conjunto de su equivalente, pues podemos indicar en cualquier lugar del código fuente (ya sea dentro de una variable, de una palabra reservada, o en cualquier otro lugar), mediante la codificación UNICODE y utilizando la propia nomenclatura de UNICODE, virtualmente cualquier carácter un símbolo que consideremos necesario.

3 comentarios sobre “El uso de la "algarroba" dentro de un programa escrito en C#”

  1. Sí… En VB.NET tienes una opción similar si utilizas los corchetes para enmarcar el nombre de la variable. Por ejemplo:

    Private [String] As String

    Tiene una utilidad: Recuerda que en .NET, el código que crees en C# no sólo va a ser usado necesariamente por C#. Y como las palabras reservadas de cada lenguaje son diferentes, podrías tener algún trozo de código en el que puedas necesitar la arroba. Ahora mismo no se me ocurre ninguno, pero haberlo seguro que lo hay 😉

Deja un comentario

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