Ir al contenido principal

Tu primer programa en C#: "Hola Mundo"

Introducción

La tradición en el mundo de la programación marca que el primer programa que se escribe en un nuevo lenguaje es el famoso "Hola Mundo". Este sencillo programa muestra un mensaje en pantalla y, aunque parece trivial, nos permite verificar que nuestro entorno de desarrollo está correctamente configurado y nos introduce a la sintaxis básica del lenguaje.

En este artículo, crearemos paso a paso nuestro primer programa en C#. Aprenderemos a crear un proyecto, entender su estructura, escribir código, compilarlo y ejecutarlo. A través de este ejercicio básico, nos familiarizaremos con los conceptos fundamentales que necesitaremos para desarrollos más complejos en el futuro.

Aunque el programa es simple, cada línea de código tiene un propósito específico que exploraremos en detalle, sentando así las bases para nuestro aprendizaje de C#.

Creación del proyecto "Hola Mundo"

Comencemos por crear un nuevo proyecto en nuestro entorno de desarrollo. Veremos cómo hacerlo tanto en Visual Studio como en Visual Studio Code.

Usando Visual Studio 2022

  1. Abre Visual Studio 2022
  2. En la pantalla de inicio, haz clic en "Crear un proyecto nuevo"

    imagen.png
  3. En el buscador, escribe "consola" para filtrar las plantillas
  4. Selecciona "Aplicación de consola" y haz clic en "Siguiente"

    imagen.png

  5. Establece la configuración del proyecto:
    • Nombre del proyecto: "HolaMundo"
    • Ubicación: selecciona la carpeta donde deseas guardar el proyecto
    • Solución: puedes dejar el nombre por defecto

      imagen.png

  6. Haz clic en "Siguiente"
  7. En la pantalla de información adicional:
    • Asegúrate de que ".NET 8.0" está seleccionado en el desplegable
    • Mantén marcada la opción "No usar instrucciones de nivel superior"
  8. Finalmente, haz clic en "Crear"

    imagen.png

Usando Visual Studio Code

  1. Abre Visual Studio Code
  2. Abre una terminal (menú Terminal > Nuevo terminal)
  3. Navega hasta la carpeta donde deseas crear el proyecto
  4. Ejecuta los siguientes comandos:
dotnet new console -n HolaMundo
cd HolaMundo
code .

El primer comando crea un proyecto de consola con el nombre "HolaMundo", el segundo entra en la carpeta del proyecto, y el tercero abre VS Code en esa carpeta.

Visual Studio Code - Alternativa

También puedes hacer lo siguiente de modo alternativo:

  1. Usando el terminal ve a la carpeta o unidad donde deseas crear tu proyecto y escribe los siguientes comandos

    dotnet new console -n HolaMundo
    cd HolaMundo
    code .
    

    imagen.png


  2. Una nueva instancia de Visual Studio Code se abre con tu proyecto ya cargado.

Estructura inicial del proyecto

Una vez creado el proyecto, veremos que se ha generado una estructura básica. Vamos a examinar los archivos y carpetas más importantes:

imagen.png

Archivos principales:

  • HolaMundo.csproj: El archivo de proyecto que contiene la configuración de compilación y las referencias a paquetes.
  • Program.cs: El archivo principal que contiene el código fuente de nuestro programa.

Carpetas generadas:

  • obj: Contiene archivos intermedios generados durante la compilación.
  • bin: Aparecerá después de compilar y contendrá los archivos ejecutables.

Veamos el contenido inicial del archivo HolaMundo.csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

Este archivo XML especifica:

  • Que estamos creando un proyecto ejecutable (OutputType>Exe</OutputType>)
  • Que estamos usando .NET 8.0 (TargetFramework>net8.0</TargetFramework>)
  • Que las directivas using comunes están implícitas (ImplicitUsings>enable</ImplicitUsings>)
  • Que los tipos de referencia son nullables por defecto (Nullable>enable</Nullable>)

El código del programa "Hola Mundo"

Al abrir el archivo Program.cs, veremos que Visual Studio o la plantilla de .NET ha generado automáticamente un código inicial. Vamos a modificarlo para crear nuestro programa "Hola Mundo".

Código original generado:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

Nuestro código "Hola Mundo" completo:

Vamos a expandir este código para hacerlo más explícito y educativo:

// Mi primer programa en C#
using System;

namespace HolaMundo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Mostrar un mensaje en la consola
            Console.WriteLine("¡Hola Mundo desde C#!");
            
            // Esperar a que el usuario presione una tecla
            Console.WriteLine("Presiona cualquier tecla para salir...");
            Console.ReadKey();
        }
    }
}

Explicación línea por línea

Vamos a analizar cada parte de nuestro código para entender su función:

Comentarios

// Mi primer programa en C#

Los comentarios comienzan con // y son ignorados por el compilador. Sirven para documentar el código y hacerlo más comprensible.

Directiva using

using System;

Esta línea le indica al compilador que vamos a utilizar clases del espacio de nombres System, que contiene funciones básicas de entrada/salida, entre otras.

Espacio de nombres (namespace)

namespace HolaMundo
{
    // Código del programa
}

Un espacio de nombres organiza el código y evita conflictos de nombres. En este caso, hemos creado un espacio de nombres llamado HolaMundo.

Declaración de clase

class Program
{
    // Código de la clase
}

En C#, todo el código debe estar dentro de una clase. Aquí hemos definido una clase llamada Program que contendrá nuestro programa.

Método Main

static void Main(string[] args)
{
    // Código del método
}

El método Main es el punto de entrada de un programa C#. Cuando ejecutamos el programa, el sistema busca este método y comienza la ejecución desde aquí:

  • static: Indica que el método pertenece a la clase, no a una instancia de la clase.
  • void: Indica que el método no devuelve ningún valor.
  • Main: El nombre del método, que debe ser exactamente "Main" para el punto de entrada.
  • string[] args: Un array de cadenas que contiene los argumentos de la línea de comandos.

Mostrar mensaje en consola

Console.WriteLine("¡Hola Mundo desde C#!");

Esta línea muestra el texto "¡Hola Mundo desde C#!" en la consola:

  • Console: Una clase del espacio de nombres System que proporciona acceso a la consola.
  • WriteLine: Un método que escribe una línea de texto en la consola y añade un salto de línea.

Esperar entrada del usuario

Console.WriteLine("Presiona cualquier tecla para salir...");
Console.ReadKey();

Estas líneas muestran un mensaje de instrucción y luego esperan a que el usuario presione una tecla. ReadKey() es un método que lee una tecla pulsada por el usuario. Esto impide que la ventana de la consola se cierre inmediatamente después de mostrar el mensaje.

Compilación y ejecución del programa

Una vez que hemos escrito nuestro código, es hora de compilarlo y ejecutarlo.

En Visual Studio:

  1. Verifica que no hay errores en el código (Visual Studio muestra errores con subrayados rojos)
  2. Presiona F5 o haz clic en el botón "Iniciar" (el triángulo verde) en la barra de herramientas

    imagen.png



  3. Visual Studio compilará el código y, si no hay errores, ejecutará el programa
  4. Verás una ventana de consola con el mensaje "¡Hola Mundo desde C#!"

    imagen.png


  5. Presiona cualquier tecla para cerrar la aplicación

En Visual Studio Code:

  1. Abre una terminal en VS Code (Terminal > Nuevo terminal)
  2. Asegúrate de estar en la carpeta del proyecto
  3. Ejecuta el siguiente comando para compilar y ejecutar el programa:
dotnet run
  1. Verás el mensaje "¡Hola Mundo desde C#!" en la terminal

    imagen.png


  2. Presiona cualquier tecla para finalizar el programa

¿Qué ocurre al ejecutar el programa?

Cuando ejecutamos nuestro programa "Hola Mundo", se producen varios procesos:

  1. Compilación: El compilador de C# convierte nuestro código fuente en un lenguaje intermedio (IL)
  2. Empaquetado: El IL se empaqueta en un ensamblado (un archivo .exe o .dll)
  3. Ejecución: El Common Language Runtime (CLR) de .NET carga el ensamblado
  4. Just-In-Time Compilation: El CLR compila el IL a código máquina nativo
  5. Ejecución del programa: Se ejecuta el método Main y se muestra nuestro mensaje

Variaciones del programa "Hola Mundo"

Versión con entrada del usuario:

using System;

namespace HolaMundoInteractivo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Solicitar el nombre al usuario
            Console.Write("Por favor, introduce tu nombre: ");
            string nombre = Console.ReadLine();
            
            // Mostrar un saludo personalizado
            Console.WriteLine($"¡Hola, {nombre}! Bienvenido a C#.");
            
            // Esperar a que el usuario presione una tecla
            Console.WriteLine("Presiona cualquier tecla para salir...");
            Console.ReadKey();
        }
    }
}

En esta variación:

  • Console.Write() muestra texto sin añadir un salto de línea al final
  • Console.ReadLine() lee una línea de texto introducida por el usuario
  • $"¡Hola, {nombre}!" es una cadena interpolada que incluye el valor de la variable nombre

Versión con formato de colores:

using System;

namespace HolaMundoColorido
{
    class Program
    {
        static void Main(string[] args)
        {
            // Guardar el color original
            ConsoleColor colorOriginal = Console.ForegroundColor;
            
            // Cambiar el color del texto a verde
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("¡Hola Mundo desde C#!");
            
            // Cambiar el color del texto a azul
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("Este es mi primer programa.");
            
            // Restaurar el color original
            Console.ForegroundColor = colorOriginal;
            
            // Esperar a que el usuario presione una tecla
            Console.WriteLine("Presiona cualquier tecla para salir...");
            Console.ReadKey();
        }
    }
}

En esta variación:

  • Console.ForegroundColor es una propiedad que controla el color del texto en la consola
  • ConsoleColor es un enumerado que define los colores disponibles

Estilo de código top-level statements

.NET 6 y posterior introdujo una sintaxis simplificada conocida como "top-level statements" (declaraciones de nivel superior), que permite escribir programas C# con menos código repetitivo. Si eligieras esta opción al crear el proyecto, tu "Hola Mundo" se vería así:

// Mi primer programa en C# usando top-level statements
using System;

// El código se ejecuta directamente, sin necesidad de definir una clase o método Main
Console.WriteLine("¡Hola Mundo desde C#!");
Console.WriteLine("Presiona cualquier tecla para salir...");
Console.ReadKey();

Esta sintaxis elimina la necesidad de escribir explícitamente el espacio de nombres, la clase y el método Main, lo que hace que los programas pequeños sean más concisos. Sin embargo, para este tutorial usaremos la sintaxis tradicional para comprender mejor la estructura completa de un programa C#.

Errores comunes y cómo solucionarlos

Error: "CS5001: Program does not contain a static 'Main' method suitable for an entry point"

Solución: Asegúrate de que has definido correctamente el método Main:

static void Main(string[] args)
{
    // Código
}

Error: "CS0103: The name 'Console' does not exist in the current context"

Solución: Añade la directiva using necesaria:

using System;

Error: "CS1002: ; expected"

Solución: Verifica que cada instrucción termina con punto y coma (;).

Error: La ventana de la consola se cierra inmediatamente

Solución: Añade las siguientes líneas al final de tu método Main:

Console.WriteLine("Presiona cualquier tecla para salir...");
Console.ReadKey();

Buenas prácticas para empezar con buen pie

Incluso en un programa tan simple como "Hola Mundo", podemos seguir algunas buenas prácticas:

  1. Uso de comentarios: Documenta tu código para explicar su propósito
  2. Nombres descriptivos: Usa nombres significativos para variables, métodos y clases
  3. Indentación correcta: Mantén un formato consistente para mejorar la legibilidad
  4. Manejo de recursos: Aunque no aplica mucho en este ejemplo, es bueno cerrar los recursos que se abren
  5. Control de errores: En programas más complejos, usa bloques try-catch para manejar excepciones

Resumen

En este artículo, hemos creado y ejecutado nuestro primer programa en C#: el clásico "Hola Mundo". A pesar de su simplicidad, este ejercicio nos ha permitido explorar conceptos fundamentales como la estructura básica de un programa C#, el uso de espacios de nombres y clases, y la entrada/salida por consola.

Hemos aprendido a crear un proyecto desde cero, tanto en Visual Studio como en Visual Studio Code, y hemos visto cómo compilar y ejecutar nuestro código. También hemos explorado algunas variaciones del programa "Hola Mundo" para introducir conceptos adicionales como la entrada del usuario y el formateo de la salida.

En el próximo artículo, profundizaremos en la estructura básica de un programa en C#, donde exploraremos con más detalle los espacios de nombres, clases, métodos y otros elementos fundamentales que componen un programa en este lenguaje.