Escrito por George POLIOVEI el Martes 07 de Abril de 2009 a las 09:38hs
Bienvenidos a esta nueva entrega de Aprendiendo .NET
En esta oportunidad vamos a estudiar los siguientes temas
• Palabras reservadas del lenguaje C#
• El Método Main() en profundidad
PALABRAS RESERVADAS DEL LENGUAJE
Las aplicaciones que hemos estado estudiando en las entregas anteriores, contienen muchas palabras, de las cuales algunas de ellas son reconocidas por el lenguaje y marcadas como reservadas, y aquellas que no lo son, se les denominan como por ejemplo <indentificadores> …
Una palabra reservada no la podemos utilizar como <identificador>, ya que al ser reservada tiene un significado especial para el lenguaje, ejemplos de estas palabras que hemos estado utilizando son:
• <public>
• <static>
• <void>
• <System>
• <string>
• …
Los <identificadores> simplemente son nombres por medio de los cuales referenciamos alguna parte de nuestro código, como por ejemplo una clase, o una variable …
También los métodos necesitan ser referenciados por alguna palabra para poder usarlos, por ejemplo hemos estado usando el método de entrada a la aplicación al cual lo hemos denominada Main.
public static void Main()
La línea anterior es una declaración de método y contiene tres palabras reservadas del lenguaje (public, static y void) y una que hace de identificador de dicho método (Main)
public class HelloGuruProgrammer
En esta otra vemos una declaración de clase, la cual contiene dos palabras reservadas (public y class) y una que hace de identificador de la clase (HelloGuruProgrammer)
La siguiente lista muestra las palabras que C# mantiene como reservadas, puede que falten algunas pero están casi todas:
![]() |
Esta lista la hice en el note padd ++ para que aprecien como todas ellas toman color, esto significa que todas ellas son reservadas por el lenguaje en el que estamos programando, en nuestro caso C#.
Ok, si queremos usar una de estas palabras como identificador entonces lo que obtendremos será un error de compilación.
Veamos un ejemplo :
![]() |
Esta aplicación nos dará error durante la compilación, ya que estamos tratando de usar como <identificador> de variable una palabra reservada del lenguaje <class>, ahora bien el note padd nos esta alertando de esta situación, pero imaginen si están trabajando con un editor de texto que no tenga esta diferenciación como por ejemplo el blok de notas de Windows
Veamos ahora el error de compilación :
![]() |
Bueno la imagen lo dice todo, observen la cantidad de errores generados por haber usado una palabra reservada como <identificador> de una variable, concretamente la flecha roja muestra donde se produjo el error (linea 5 , columna 13), si miramos el código fuente en dicho lugar se encuentra el identificador no válido usado (int class…), también el compilador muestra a que se debió el error (Identifier expected), dice que se esperaba un identificador.
Una cosa para complementar, no es usual que los programadores utilicen como <identificadores> palabras reservadas, pero si necesitan hacerlo hay un modo que evita el error de compilación, repito solo se debe hacer en los casos que se crean sumamente necesario.
Para que se pueda usar una palabra reservada del lenguaje como identificador simplemente se le debe interponer el símbolo @
int @class = 5;
Pero como dije antes nos es una buena práctica
Veámoslo en la hoja de código
La siguiente imagen muestra el código modificado donde le interpuse el símbolo de @ a la palabra reservada class
![]() |
Como pueden apreciar la palabra se ha des coloreado, esto significa que ya no estamos usando una palabra reservada, aunque en realidad casi
Luego desde la consola lo compilo y haber que sucede
![]() |
Observen que ya no hubo error de compilación de lo contrario habría aparecido donde señala la flecha roja, esto significa que el MSIL ha sido creado correctamente.
EL METODO Main()
Si recuerdan, en las entregas anteriores habíamos dicho que todas nuestras aplicaciones deberían implementar el método Main(), ya que éste registra el punto de entrada a nuestra aplicación, ahora bien, también dijimos que dicho método debería ser estático (static) para que solo una copia del método viviese en memoria y público (public) para que pueda ser accedido a él desde el exterior de la clase e inclusive de la aplicación.
En esta entrega vamos a ahondar un poco más en dicho método ya que considero que, para las siguientes entregas es necesario que se de por entendido y sabido dicho tema
Hasta ahora, hemos estado usando una sola clase como practica para nuestras aplicaciones, pero en realidad a medida que crecen los aplicativos no es una buena práctica mantener todo el código en una sola clase sino en varias, esto ayuda a ordenar y hacer mas entendible nuestro código, también permite usar el concepto de reutilización de código.
Para el caso donde nuestro aplicativo posea más de una clase, inclusive más de un archivo de código fuente es importante recordar que al menos una de las clases que conforman la aplicación, debe implementar el método Main(), no pueden haber mas de una clase que implemente dicho método, SOLO DEBE SER IMPLEMENTADO POR UNA , de lo contrario se producirá un error de compilación.
Veamos un ejemplo
El siguiente aplicativo lo llamaré ejemplo2.cs, y estará conformado por 2 clases, ambas implementaran el método Main()
![]() |
Esto producirá un error de compilación ya que nuestra aplicación implementa el método Main(), en ambas clases y como dijimos solamente una de las clases que conforman el aplicativo debe implementarlo, pero veamos el error para que quede mas claro
![]() |
Como era de esperarse durante el proceso de compilación surgió el error, y además el noble compilador nos está indicando cual fue
“Has more than entry point defined:”
Tiene más de un punto de entrada definido
Obviamente con eliminar uno de los métodos definidos se soluciona el problema pero vamos a eliminar ambos métodos para ver que sucede
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Oscar
Acabo de enterarme de la pàgina por un programa de TV. Me gusta la programación en Visual Basic y hace días que no trabajo en ello.
Gracias por compartir tus conocimientos, igualmente para todos aquellos que tienen este espíritu altruista.
Hola george, por favor no dejes de escribir estos articulos tan interesantes, ya hace tiempo que no lo haces.
Saludos
Que tal buenos amigos, en primer lugar mil disculpas por no haber posteado nada mas, el tema pasa porque nos hemos embarcado en un proyecto realmente grande que nos ocupa mucho tiempo, pero esparamos seguir discutiendo pronto, muchas gracias por los comentarios y al admin del sitio que mantiene nuestro post, en la edicion 9 veremos esos problemas que han comentado y seguro ya han resuelto, a su vez les comento que se nos ha unido un amigo muy especial que esta deseoso de postear sus conocimientos
Muchas cordialidades
GRP
Hola! veo que no han comentado desde Junio :D ...
Nuevamente mis felicitaciones a quienes están realizando tan majestuosa labor de dar conceptos de manera clara y sencilla.. estoy esperando ansioso la edición 9 de este curso.. así que adelante y no se demoren. :D
Un abrazo.
Hola que tal? Recién hoy pude engancharme con el curso. Estuve leyendo y se me ocurrio, ya que en estecapítulo hablaste de algunos errores específicos del main. Si podas explicarme o ampliarme este error que me sale cuando intento compilar el código de la parte anterior.
Nombredelaclase.cs: error CS0116: Un espacio de nombres no contiene directamente miembros como campos o métodos.
Muchas gracias y felicitaciones, hasta ahora todo genial, salvo ese pequeñito error.
Hola, mira se que ya hablastes del tema pero en un comentario de una nota anterior, la pregunta es podrias explicar como los haces con el curso pero referente a los sistemas numericos ? necesito para la clase de programacion realizar conversiones a binario y hexadecimal y todo eso, bueno espero me puedan ayudar
besos
Hola, primero que nada comentarle que el curso esta muy bueno, y lo estoy siguiendo muy de cerca, yo ya manejo .NET pero el curso que hice me dejo muchas dudas y la verdad nunca habia visto cosas como crear un programa con un block de notas como lo haces tu en .NET, mira no se si es molestia pero estoy diseñando una pagina donde quiero mostrar el resultado de una serie de datos en un label pero me gustaria que me salieran con vuelta de carro, o sea yo recibo 6 datos por ej nombre, apellido, edad y me gustaria mostrarlos en un label pero cada dato en un renglon, he intentado pero no me sale lo hago por ejemplo con lblMensaje.Text = dato1 +
+ dato2 +
.....
por alguna razon no sale como quiero, si sale pero todo en una misma linea, bueno perdon por el pedido un abrazo, espero me puedan ayudar
muchas gracias por escribir esto
de verdad que hace tiempo queria aprender a programar en C# pero ahy muchos que enseñan partiendo de la base que sabes algo de este lenguaje
yo soy programador titulado y no me enseñaron este interesante lenguaje la base de C++ la tengo pero quiero perfeccionarla
fuerza y sientete orgulloso de tu esfuerzo y dedicacion
Muy apreciado Oscar, gracias por el aliento que nos dejas, sobre ASP.NET seguro que lo daremos desde 0, es lo que tenemos pensado, lo unico que a este paso creo nos llevará mas de 200 entregas, espero poder cumplir, sobre Java, permiteme decirte que si te muestro 2 bloques de código uno en Java y otro en C# seguranmente no destingas a cual pertenece cada uno, ademas ambos trabajan sobre una maquina virtual, pero creo que para que esto quede bien de verdad quizas empecemos a hablar un poco de C y C++ no se, creo que es mas productivo que Java.
Gracias por escribirnos
Cordialidades
George
Buen día, antes que nada una sincera felicitación, ya que hasta este tema 8 el curso ha estado llevado de una forma muy clara y fácil de entender, solo espero q los que falten por concluir lleven la misma metodoligía, y como mencionaste....se toma un gusto por este lenguaje que se toma la decisión de meterse a aquellos que tengan que ver con .NET. Por útimo me gustaria saber si tienes pensado incorporar uno de ASP.NET y de JAVA que en verdad si pudiera ser el caso me gustaria que fuesen desde cero también; claro con la claridad como estas llevando este, espero no sea mucho pedir ya que estoy interesado en esta parte, hasta pronto y nuevamente una felicitación de mi parte con afecto, att tu amigo Oscar.