Este sería nuestro Hola Mundo en C#, en un proyecto de consola. Veremos cómo crear un primer programa, conoceremos el método main y los medios para poder ejecutar y compilar el código de este primer programa en C#.
En el artículo anterior estuvimos estudiando el inicio de los proyectos en C#, desde la instalación de la plataforma .NET a los primeros pasos para crear proyectos, que cambian dependiendo del editor o IDE que estás usando. Esa parte no la vamos a repetir, por lo que partimos de un proyecto recién creado con el comando:
dotnet new console
Esto nos ha dejado una estructura de archivos y carpetas en el directorio donde hemos iniciado el proyecto. Entre todos ellos encuentras uno llamado "Program.cs". Ese es el archivo que está configurado como arranque de nuestro proyecto y donde vamos a comenzar a poner las manos en el código.
Clase de arranque de un proyecto de consola en C#
Observarás que el archivo Program.cs ya viene con el esqueleto de una clase, de Programación Orientada a Objetos. Esta clase ya contiene el código de un "Hola mundo" en C#, por lo que nos han adelantado trabajo para esta presentación práctica de C#.
El código que encontramos es el siguiente:
using System;
namespace manual_c_sharp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Lo único que podrá cambiar en el código que habrás generado en tu caso es el namespace de la clase, que en mi caso se llaman "manual_c_sharp", que es el nombre de la carpeta donde había generado este nuevo proyecto.
Este archivo de arranque tiene estas particularidades:
Primero se requiere un namespace dentro de este componente, uno que nos viene proporcionado por la propia plataforma .NET, que es System.
using System;
Luego se declara el namespace de esta clase que acabamos de crear.
namespace manual_c_sharp
Este namespace se podría cambiar perfectamente de nombre, a voluntad del desarrollador, si se juzgara necesario, para algo como "ManualCSharp" o cualquier cosa que queramos. Es independiente el nombre de la carpeta donde se encuentre la clase, es decir, no es necesario que coincida el nombre del namespace con el nombre de la carpeta donde has colocado ese archivo. Sí es importante que la clase esté dentro de un namespace, pues es un requisito del lenguaje. No puede haber ninguna clase fuera de un namespace.
Un namespace viene a ser lo que la propia palabra indica, un espacio de nombres. Es la manera de organizar las clases de un proyecto, en diversos paquetes para conseguir formar la arquitectura de la aplicación. También permite que las clases de un namespace se nombren libremente, sin pensar en que esos nombres se hayan utilizado en otros espacios de nombres, ya que no colisionarían por formar parte de paquetes distintos.
Dentro del namespace encontramos ya la declaración de de la clase que estamos programando.
class Program {
// …
}
La clase tiene el mismo nombre que el archivo que se había generado, con la primera letra en mayúscula, como es convención en los nombres de clases.
Método Main
Dentro de la clase encontramos el método Main. Este es el** método que se ejecutará al ponerse en marcha la aplicación**, que debe hacer el arranque del programa.
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
Main es un método estático que no devuelve nada y que recibe un array de argumentos. Un método estático significa que es un método que se ejecuta sobre la clase. La declaración "void" es la que indica que no va a devolver nada el método.
Los que ya habéis tenido experiencia con otros lenguajes de programación similares, como Java, seguramente os parecerá todo muy familiar. Para los que no, simplemente decir que toda clase puede tener un método Main que se utiliza para ejecutarla. En ella generalmente se instanciarán objetos de esa clase y se pondrán en funcionamiento. Como esta es la clase principal del programa, este método es fundamental, porque servirá de arranque a todo el proyecto.
Dentro de este método estamos utilizando la clase Console que nos provee el namespace System. Es una clase que contiene diversos métodos, en este caso estamos haciendo uso de su método estático WriteLine() que se encarga de enviar texto a la consola.
En eso consiste nuestro primer programa en C#. Como has visto, todo el código nos lo aporta el propio generador del proyecto.
Ejecutar un programa de C#
Ahora vamos a poner en marcha este proyecto. Para ello podemos usar la consola. Nos vamos a la carpeta raíz del proyecto y hacemos un comando de arranque.
dotnet run
Ese comando lo tendremos que ejecutar desde la carpeta raíz de este proyecto, donde está el archivo Program.cs.
Al ejecutarse nos saldrá en la consola el texto que hayamos indicado en el método Console.WriteLine().
Compilar la aplicación C#
El otro comando de consola que vamos a ver es el que nos permite la compilación del proyecto.
dotnet build
Cuando ejecutes ese comando verás que se crea una carpeta nueva en el directorio del proyecto llamada "bin". Dentro de esa carpeta encontraremos varios archivos y carpetas, entre ellos hay un archivo "dll" que es el formato con el que se ha compilado la aplicación.
Podríamos pensar que esta compilación generase un .exe u otro tipo de archivo autónomo, que puedas ejecutar en cualquier lugar, sin embargo esto no es así. Para poder poner en marcha este tipo de compilaciones necesitas el runtime de C# instalado en la máquina donde los pienses ejecutar.
En realidad sí que hay una manera de hacer que la compilación incluya el runtime de C# en los archivos generados, lo que aumentaría considerablemente el peso de la compilación y generalmente no se suele usar, al menos para programas de consola, donde esperamos que C# (.NET) generalmente esté instalado en la máquina donde pensamos poner los programas en funcionamiento. Recuerda que actualmente .NET y C# es multiplataforma y por tanto lo puedes instalar en cualquier sistema donde lo requieras.
No obstante lo anterior, los archivos compilados en formato .dll sí que son perfectamente portables. Los puedes copiar tal cual en cualquier ordenador que tenga instalado .NET y ejecutarlos sin más.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...