Primer programa
Crear la primera aplicación C#
Ahora ha llegado el momento de pasar a la práctica y descubrir las bases de C# mediante la creación de un primer programa. Como ya se ha mencionado en la introducción, para que no nos molesten los límites propios de un entorno específico, vamos a crear nuestra primera aplicación como si fuera una aplicación de consola. Más adelante en este libro estudiaremos otras formas de aplicaciones.
Teniendo en cuenta que hemos elegido usar Visual Studio Code, hay que pasar por la línea de comandos para crear una aplicación nueva.
En el primer momento, Visual Studio Code probablemente le pedirá que instale el paquete de idioma español para tener los elementos de la interfaz en español. Esta es una elección completamente personal y válida. Sin embargo, el autor recomienda seguir con la versión en inglés de la interfaz para evitar errores de traducción que puedan generar malentendidos. Por ello, todas las capturas de pantalla de Visual Studio Code estarán en inglés.
Para crear nuestra primera aplicación, hay que seguir las siguientes etapas:
Cree una carpeta nueva en algún lugar del ordenador (en el escritorio, por ejemplo, o en una carpeta donde estén guardados sus documentos) y llámela «MiPrimeraAplicacion».
Vaya a esta carpeta y abra Visual Studio Code...
Comprender y escribir código C#
Nuestro programa de demostración es muy sencillo porque representa el programa de prueba tipo que se ejecuta habitualmente cuando se aprende un lenguaje: mostrar la frase «Hello World!».
Teniendo en cuenta que nuestra aplicación es una aplicación de consola, elegimos mostrar el texto directamente en la consola. Por eso la línea 2 contiene esta instrucción:
Console.WriteLine("Hello World!");
La primera cosa bastante fácil de identificar es la presencia obligatoria del carácter ; al final de cada instrucción (excepto en los comentarios). En C#, es necesario separar las instrucciones mediante un punto y coma. Además, eso significa que, cuando el compilador no encuentra este carácter, lee las instrucciones de línea en línea hasta encontrarlo (es posible escribir código en varias líneas).
Aquí, siempre y cuando hable un poco de inglés, la instrucción es sencilla. Usamos la consola para escribir una línea e indicamos entre paréntesis lo que queremos mostrar en esta línea en la consola. Esta manera de proceder se llama pasar parámetros a una función.
En concreto, si analizamos completamente esta instrucción:
-
Utilizamos la clase Console.
-
Llamamos al método estático (estudiaremos qué significa estático más adelante) WriteLine en la clase Console.
-
Pasamos como parámetro al método una cadena de caracteres que contiene "Hello World!".
Aquí nos encontramos con varios conceptos importantes que se aclararán a lo largo del libro. Sin embargo, esta instrucción consiste simplemente en la llamada a un método de una clase ya existente, proporcionada por el framework. También observará que en su archivo no hay ninguna declaración de la clase Console. Esto se debe a que dicha clase está definida en el espacio de nombres System y, al comienzo del archivo, este espacio de nombres se importa mediante una instrucción using. Si estas explicaciones aún le parecen confusas, no se preocupe: se irán aclarando a medida que avance en la lectura del libro.
Otro elemento importante: para llamar a un método en un objeto, siempre se usa el punto como separador. Además, si se coloca en una línea vacía...
Analizar la estructura de un proyecto C#
Un archivo de código C# puede contener instrucciones diversas y variadas. Primero vamos a interesarnos por lo que hace la estructura de un archivo C# clásico, que no se puede ver desde nuestro proyecto de ejemplo porque este último usa el modelo de aplicación simplificado.
C# 9 ha contribuido en gran medida a simplificar la escritura de programas sencillos; por eso el programa generado al principio de este libro solo contiene una única instrucción. Para no alterar los conceptos elementales del código C#, trataremos esta idea al final de esta sección, cuando se haya adquirido el concepto de bloque.
1. El concepto de bloques
.NET 6 introdujo de forma predeterminada el uso de un modelo simplificado para aplicaciones de consola, lo que implica que todo el código se puede escribir directamente en la raíz del archivo Program.cs. Para poder estudiar la noción de bloques, usaremos el modelo inicial anterior a .NET 6. Es posible encontrar este código utilizando un parámetro especial al crear nuestra aplicación: dotnet new console --use-program-main.
Cuando usamos el comando dotnet new dentro de un directorio en particular, el proyecto toma el nombre del directorio en cuestión. Es posible nombrar nuestro proyecto de manera diferente usando el parámetro -n: dotnet new console -n MiPrimeraAplicacion. La ejecución de esta línea de comando producirá un nuevo proyecto de consola llamado MiPrimeraAplicacion.
He aquí el código contenido en el archivo Program.cs, generado por la herramienta después de ejecutar este comando:

Aplicación de consola con el parámetro --use-program-main
Por supuesto, esto es más complejo que la versión que hemos conocido, pero contiene conceptos fundamentales sobre el código C#. En todas las explicaciones que siguen, vamos a tener en cuenta este código.
Algunos caracteres aparecen varias veces en un archivo de C# y deberán ser identificados de manera automática. Lo primero que vemos es que hay un sangrado (un desplazamiento de las líneas hacia la derecha) y que este sangrado está vinculado a los caracteres llave («{» y «}»).
De manera bastante sencilla, el lenguaje C# funciona por bloques.
Un bloque es un fragmento de código que tiene...
Ejecutar un programa C#
Ahora es el momento de ver cómo se puede lanzar un programa C#. Nuestro programa de ejemplo solo muestra «Hello World!» en la consola, pero sería interesante verlo ejecutarse. Hay dos maneras de hacer esto.
1. Lanzar el programa con Visual Studio Code
Si ha visto la pequeña ventana emergente al principio que le ha pedido restaurar algunos elementos para su programa, Visual Studio Code ha detectado que escribe una aplicación C# y ha preparado las dependencias para que pueda ejecutarlo.
Para iniciar la aplicación, hay que ir a la pestaña Run & Debug, representada por este icono:
Icono Visual Studio Code para ejecutar el programa
Después de llegar a esta parte de la aplicación, el panel de la izquierda cambia para cargar lo que se llama el depurador (debugger en inglés). Gracias a esta herramienta, se puede lanzar una aplicación C# y observar, durante su ejecución, los valores de variables y analizar el desarrollo del código paso a paso.
En la parte superior del panel, normalmente hay una flecha pequeña de reproducción que permite iniciar el programa y vincularle el depurador:
Flecha de lanzamiento de una aplicación con ayuda del depurador
Al hacer clic en la flecha, la aplicación se compila y se lanza en la parte inferior de Visual Studio Code. Puede ver el resultado de su programa C#, que en este momento se contenta...
Ejercicio
Ahora que sabe cómo ejecutar una aplicación .NET y ha comprendido el principio del uso de variables, es el momento de hacer un ejercicio.
Principalmente, una variable sirve para recuperar valores emitidos por funciones. El método Console.ReadLine permite recuperar, bajo la forma de una cadena de caracteres, la escritura del usuario en la consola. Por el momento, no se pide ninguna comprobación de que la edad sea un entero.
1. Enunciado
Como ejercicio, esto es lo que se pide:
-
Mostrar un texto de bienvenida.
-
Pedirle al usuario que escriba su nombre.
-
Pedirle al usuario que escriba su edad.
-
Mostrar en la consola «Hola [NOMBRE], tiene [EDAD] años» sustituyendo los valores entre corchetes por los valores recuperados.
2. Solución
Para hacer este pequeño ejercicio, puede crear una aplicación nueva o utilizar la que ya hemos creado. Usando los métodos Console.ReadLine, Console.WriteLine y variables, este ejercicio se puede hacer de la siguiente manera:
Console.WriteLine("Bienvenido a mi programa");
Console.WriteLine("Escriba su nombre y pulse 'Intro'");
string nombre = Console.ReadLine();
Console.WriteLine("Escriba su edad y pulse 'Intro'");
string edad = Console.ReadLine();
Console.WriteLine("Hola" + nombre + ", tiene " + edad + " años");...