Domitienda. Hosting ASP .NET 3.5 / SQL SERVER 2005
  buscar 
novedades
Recibe las ultimas noticias y los mejores articulos en tu email
Secciones
 • .NET Framework
 • ADO .NET
 • Ajax
 • Asp .NET
 • Biztalk
 • C#
 • Commerce Server
 • Exchange
 • IIS
 • Metodologías
 • J#
 • Office
 • Reporting Services
 • Seguridad
 • SEO
 • Servicios Web
 • Sharepoint
 • Silverlight
 • SQL Server
 • Visual Basic .NET
 • Visual C++ .NET
 • Visual Studio
 • WCF
 • Windows
 • Workflow Foundation
 • WPF
 • XAML
 • XML
 • Dynamics
 • Noticias
 • Articulos
 • Tutoriales
 • Eventos
 • Cursos
 • Ofertas Empleo
 • RSS
Contacto
¿Quieres saber quien es el creador de Clikear?

Tutorial C#

Palabras reservadas

 

Aunque antes se han dado una serie de restricciones sobre cuáles son los nombres válidos que se pueden dar en C# a los identificadores, falta todavía por dar una: los siguientes nombres no son válidos como identificadores ya que tienen un significado especial en el lenguaje:

 

            abstract, as, base, bool, break, byte, case, catch, char, checked, class, const,   continue, decimal, default, delegate, do, double, else, enum, event, explicit, extern, false, finally, fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, lock,        is, long, namespace, new, null, object, operator, out, override, params, private, protected, public, readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static,      string, struct, switch, this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort,        using, virtual, void, while

 

Aparte de estas palabras reservadas, si en futuras implementaciones del lenguaje se decidiese incluir nuevas palabras reservadas, Microsoft dice que dichas palabras habrían de incluir al menos dos símbolos de subrayado consecutivos (__) Por tanto, para evitar posibles conflictos futuros no se recomienda dar a nuestros identificadores nombres que contengan dicha secuencia de símbolos.

 

Aunque directamente no podemos dar estos nombres a nuestros identificadores, C# proporciona un mecanismo para hacerlo indirectamente y de una forma mucho más legible que usando secuencias de escape. Este mecanismo consiste en usar el carácter @  para prefijar el nombre coincidente con el de una palabra reservada que queramos dar a nuestra variable. Por ejemplo, el siguiente código es válido:

 

   class @class

   {

      static void @static(bool @bool)

      {

         if (@bool)

            Console.WriteLine("cierto");

         else

            Console.WriteLine("falso");

      }   

   }

 

Lo que se ha hecho en el código anterior ha sido usar @ para declarar una clase de nombre class con un método de nombre static que toma un parámetro de nombre bool, aún cuando todos estos nombres son palabras reservadas en C#.

 

Hay que  precisar que aunque el nombre que nosotros escribamos sea por ejemplo @class, el nombre con el que el compilador va a tratar internamente al identificador es solamente class. De hecho, si desde código escrito en otro lenguaje adaptado a .NET distinto a C# hacemos referencia a éste identificador y en ese lenguaje su nombre no es una palabra reservada, el nombre con el que deberemos referenciarlo es class, y no @class (si también fuese en ese lenguaje palabra reservada habría que referenciarlo con el mecanismo que el lenguaje incluyese para ello, que quizás también podría consistir en usar @ como en C#)

 

En realidad, el uso de @ no se tiene porqué limitar a preceder palabras  reservadas en C#, sino que podemos  preceder cualquier nombre con él. Sin embargo, hacer esto no se recomienda, pues es considerado como un mal hábito de programación y puede provocar errores muy sutiles como el que muestra el siguiente ejemplo:

 

            class A

            {

                        int a;     // (1)

                        int @a; // (2)

 

                        public static void Main()

                        {}

            }

 

Si intentamos compilar este código se producirá un error que nos informará de que el campo de nombre a ha sido declarado múltiples veces en la clase A. Esto se debe a que como @ no forma parte en realidad del nombre del identificador al que precede, las declaraciones marcadas con comentarios como (1) y (2) son equivalentes.

 

Hay que señalar por último una cosa respecto al carácter @: sólo puede  preceder al nombre de un identificador,  pero no puede estar contenido dentro del mismo. Es decir, identificadores como i5322@fie.us.es no son válidos.

 

Principal