Bienvenido al primer paso de tu camino como desarrollador en C#. Antes de escribir una sola línea de código conviene entender qué es este lenguaje, por qué lo usan millones de desarrolladores en todo el mundo y qué lo hace especial frente a otras opciones. Esta lección te da el mapa general: características clave, un poco de historia, el ecosistema .NET en el que vive C#, y una primera mirada (ya comentada) a un programa "Hola Mundo" para que veas, desde el minuto uno, el aspecto que tiene el código real. A lo largo de todo el curso iremos construyendo un proyecto conductor llamado BiblioTech, un sistema de gestión de biblioteca, así que aquí también te presentamos esa idea para que sepas hacia dónde nos dirigimos.
Contenido
- Qué es C#
- Características clave del lenguaje
- Breve historia y versiones relevantes
- El ecosistema .NET
- Por qué aprender C#
- Presentación del proyecto conductor: BiblioTech
- Primer vistazo a un programa "Hola Mundo"
Qué es C#
C# (se pronuncia "C Sharp") es un lenguaje de programación moderno, de propósito general, creado por Microsoft y actualmente desarrollado como proyecto de código abierto bajo la fundación .NET. Se utiliza para construir prácticamente cualquier tipo de aplicación: programas de consola, aplicaciones de escritorio, sitios y APIs web, videojuegos, aplicaciones móviles, servicios en la nube y mucho más.
C# fue diseñado desde el principio para ser:
- Simple de leer y escribir, con una sintaxis clara inspirada en lenguajes como C++ y Java.
- Seguro, evitando categorías enteras de errores comunes en lenguajes de más bajo nivel.
- Potente, incorporando de forma continua características modernas (programación funcional, asincronía, pattern matching...) sin perder su esencia orientada a objetos.
Cuando escribes código en C#, ese código se compila a un lenguaje intermedio llamado IL (Intermediate Language) que después el CLR (Common Language Runtime, el motor de ejecución de .NET) traduce a código máquina en el momento de ejecutar el programa. Este proceso se llama compilación JIT (Just-In-Time) y es lo que permite que el mismo programa en C# se pueda ejecutar en Windows, Linux o macOS sin cambiar el código fuente.
Características clave del lenguaje
A continuación tienes las características que definen a C# y que iremos explorando en profundidad a lo largo del curso:
| Característica | Qué significa | Por qué importa |
|---|---|---|
| Orientado a objetos | Los programas se organizan en clases y objetos (lo veremos en detalle en el Módulo 3) | Facilita organizar código complejo en piezas reutilizables |
| Tipado estático | El tipo de cada variable se conoce en tiempo de compilación | El compilador detecta muchos errores antes de ejecutar el programa |
| Seguridad de tipos | No se permite mezclar tipos de forma incorrecta sin conversión explícita | Reduce errores en tiempo de ejecución |
| Gestión automática de memoria | Un recolector de basura (Garbage Collector) libera memoria no usada | El programador no tiene que liberar memoria manualmente |
| Interoperabilidad | Puede convivir con código de otros lenguajes .NET (F#, Visual Basic) e incluso nativo | Permite reutilizar bibliotecas y componentes existentes |
| Multiplataforma | Se ejecuta en Windows, Linux y macOS gracias a .NET moderno | El mismo código sirve para distintos sistemas operativos |
| Ecosistema .NET | Enormes bibliotecas estándar y de terceros | No hay que "reinventar la rueda" para tareas habituales |
Vamos a detenernos un poco más en tres de estas ideas, porque son pilares del lenguaje.
Tipado estático y seguridad de tipos
En C#, cada variable tiene un tipo definido (número entero, texto, booleano, etc.) que no cambia durante la vida del programa. Por ejemplo, si declaras que una variable es un número entero, el compilador no te dejará asignarle luego un texto por error. Esto se comprueba antes de ejecutar el programa, durante la compilación, lo que permite detectar muchísimos errores de forma temprana, antes de que lleguen a producción.
Esto contrasta con lenguajes de tipado dinámico (como Python o JavaScript "clásico"), donde el tipo de una variable se determina en tiempo de ejecución y puede cambiar libremente. El tipado estático de C# tiene un coste (hay que ser más explícito) pero a cambio ofrece más seguridad y mejores herramientas de autocompletado y refactorización en el editor.
Gestión automática de memoria
Cuando creas datos en C#, el lenguaje se encarga de reservar memoria para ellos. Cuando esos datos dejan de usarse, un componente del CLR llamado recolector de basura (Garbage Collector o GC) se encarga de liberar automáticamente esa memoria. Esto elimina una fuente enorme de errores presentes en lenguajes como C o C++, donde el propio programador debe liberar la memoria manualmente (y olvidarlo provoca fugas de memoria, mientras que liberarla dos veces provoca fallos graves). Profundizaremos en cómo funciona el recolector de basura en el Módulo 6.
Interoperabilidad y ecosistema .NET
C# no vive aislado: forma parte de la plataforma .NET, que incluye:
- Una enorme biblioteca de clases base (BCL) con funcionalidad ya construida para trabajar con archivos, texto, colecciones, redes, fechas, y mucho más.
- Herramientas de línea de comandos (
dotnet) para crear, compilar y ejecutar proyectos. - Un gestor de paquetes, NuGet, con cientos de miles de bibliotecas de terceros listas para instalar y usar.
- Otros lenguajes que comparten el mismo runtime, como F# o Visual Basic, con los que C# puede interoperar sin problemas.
Breve historia y versiones relevantes
C# apareció en el año 2000, de la mano de Microsoft, como parte de la primera versión de la plataforma .NET. Desde entonces ha evolucionado de forma constante, añadiendo nuevas características en cada versión mayor. Esta tabla resume los hitos más relevantes para un desarrollador que empieza hoy:
| Versión | Año aproximado | Novedad destacada |
|---|---|---|
| C# 1.0 | 2002 | Primera versión: orientación a objetos, tipos básicos |
| C# 2.0 | 2005 | Genéricos (lo veremos en el Módulo 4) |
| C# 3.0 | 2007 | LINQ, tipos anónimos, var |
| C# 5.0 | 2012 | async/await para programación asíncrona |
| C# 6.0 / 7.0 | 2015-2017 | Interpolación de cadenas, pattern matching inicial |
| C# 8.0 | 2019 | Tipos de referencia nulables, switch expressions |
| C# 9.0 | 2020 | Records, top-level statements |
| C# 10-12 (actual) | 2021-2024 | Mejoras continuas: pattern matching avanzado, rendimiento, simplificación de sintaxis |
No necesitas memorizar esta tabla: lo importante es entender que C# es un lenguaje vivo, que sigue mejorando, y que en este curso aprenderás la forma moderna de escribirlo, incluyendo características recientes como los top-level statements que verás en la próxima lección.
Hoy en día, C# se ejecuta sobre .NET (antes llamado ".NET Core" para diferenciarlo del antiguo ".NET Framework", exclusivo de Windows). El .NET moderno es open source, multiplataforma y es la versión que usaremos durante todo el curso.
Por qué aprender C#
Estas son algunas razones por las que C# sigue siendo una de las opciones más sólidas para iniciarse en la programación profesional:
- Demanda laboral alta: se usa en empresas de todos los tamaños, desde startups hasta grandes corporaciones, para construir aplicaciones web, de escritorio, móviles y de videojuegos (con Unity).
- Curva de aprendizaje razonable: su sintaxis es clara y coherente, y el propio compilador te ayuda a detectar errores antes de ejecutar el programa.
- Versatilidad: con un mismo lenguaje puedes construir desde un script sencillo hasta un sistema empresarial completo con base de datos, o incluso un videojuego.
- Comunidad y documentación: Microsoft mantiene documentación oficial extensa y hay una comunidad global enorme generando tutoriales, foros y bibliotecas.
- Evolución constante: el lenguaje incorpora ideas modernas de otros paradigmas (funcional, inmutabilidad, etc.) sin dejar de ser accesible para principiantes.
Presentación del proyecto conductor: BiblioTech
A lo largo de este curso no vamos a limitarnos a ver ejemplos sueltos y desconectados entre sí. En su lugar, iremos construyendo, módulo a módulo, un proyecto real: BiblioTech, un sistema de gestión de una biblioteca.
La idea de BiblioTech es sencilla de entender pero lo bastante rica como para ilustrar todos los conceptos del curso:
- Una biblioteca tiene libros (con título, ISBN, número de páginas, si están disponibles o no).
- Tiene socios o miembros que pueden tomar libros en préstamo.
- Se generan préstamos, con su fecha de inicio y de devolución.
En este primer módulo trabajaremos todavía con programas de consola sencillos —variables,
arrays, texto— usando datos de BiblioTech como ejemplo (por ejemplo, el título de un libro o
un array con varios títulos). Más adelante, en el Módulo 3, aprenderemos a modelar estos
conceptos como clases (Libro, Socio, Prestamo); en el Módulo 4 aprenderemos a consultar
colecciones de libros con LINQ; en el Módulo 5 aprenderemos a guardar esos datos en archivos,
JSON o una base de datos real; y en los módulos finales le daremos a BiblioTech una interfaz
gráfica o web. El proyecto final del curso (Módulo 9) será la versión completa y pulida de
BiblioTech, con todo lo aprendido integrado.
No necesitas entender todavía cómo se construye nada de esto: solo quédate con la idea de que cada ejemplo del curso irá sumando una pieza a este mismo proyecto.
Primer vistazo a un programa "Hola Mundo"
Para que veas cómo es el código C# antes de instalar nada, aquí tienes el programa más sencillo posible, en su forma moderna (la que usaremos en este curso):
// Este es el programa más simple posible en C# moderno
Console.WriteLine("Hola, mundo desde BiblioTech!");Vamos a comentar, a alto nivel, qué hace cada parte (en la próxima lección, "Programa Hola Mundo", entraremos en el detalle completo línea a línea):
//inicia un comentario: todo lo que sigue en esa línea es solo para humanos, el compilador lo ignora.Consolees una clase de la biblioteca estándar de .NET que representa la consola (la ventana de texto donde se ejecuta el programa).WriteLinees un método de esa clase: una acción que se le puede pedir aConsole, en este caso "escribe una línea de texto y salta a la siguiente línea".- El texto entre comillas
"Hola, mundo desde BiblioTech!"es una cadena de texto (string), el dato que le pasamos al método para que lo escriba. - El punto y coma
;marca el final de la instrucción. En C#, casi todas las instrucciones terminan en punto y coma (lo veremos con detalle en la lección de sintaxis básica).
Si ejecutas este programa, verás en pantalla:
Nótese que este ejemplo usa la forma moderna de C# conocida como top-level statements (instrucciones de nivel superior), que elimina código repetitivo (boilerplate) que en versiones anteriores del lenguaje era obligatorio escribir siempre. Verás la versión completa, con esa estructura clásica y su explicación detallada, en la lección 3.
Errores Comunes y Consejos
- Confundir C# con C o C++: a pesar del nombre parecido, C# es un lenguaje muy distinto,
mucho más moderno y seguro, aunque comparte parte de la sintaxis de llaves
{ }y punto y coma;. - Pensar que hace falta saber POO antes de empezar: no es así. En este módulo aprenderás la base del lenguaje sin usar todavía clases propias; la programación orientada a objetos llega en el Módulo 3, con una base ya sólida.
- Querer aprender "toda la teoría" antes de escribir código: C# se aprende mejor practicando. Aprovecha los ejercicios de cada lección para escribir y ejecutar código cuanto antes.
- Consejo: no te preocupes si algún término técnico (CLR, JIT, recolector de basura) no queda del todo claro todavía. Iremos volviendo sobre estos conceptos con más detalle cuando corresponda (por ejemplo, la gestión de memoria se trata a fondo en el Módulo 6).
Ejercicios
-
Sin ejecutar nada todavía, explica con tus propias palabras qué significa que C# sea un lenguaje de tipado estático, y pon un ejemplo de un error que el compilador podría detectar gracias a ello.
-
Observa la tabla de características clave del lenguaje. Elige dos características (por ejemplo, "gestión automática de memoria" e "interoperabilidad") y explica, en un par de frases cada una, por qué crees que son útiles para un proyecto como BiblioTech.
-
Vuelve a leer el ejemplo de "Hola Mundo" de esta lección y modifícalo mentalmente (en papel o en un editor de texto simple, sin ejecutarlo todavía) para que en lugar de saludar al mundo, dé la bienvenida a un socio de la biblioteca, por ejemplo:
"Bienvenido a BiblioTech, María!". Escribe cómo quedaría la línea completa.
Soluciones
-
El tipado estático significa que el tipo de cada variable (por ejemplo, si es un número entero o un texto) se fija y se comprueba antes de ejecutar el programa, durante la compilación. Ejemplo de error detectado por el compilador: si tenemos una variable declarada como número entero e intentamos asignarle un texto como
"hola", el compilador dará un error de tipos y no dejará compilar el programa, en lugar de fallar más tarde, durante la ejecución. -
Respuesta orientativa (puede variar):
- Gestión automática de memoria: en BiblioTech se crearán constantemente datos temporales (por ejemplo, listas de libros encontrados en una búsqueda). No tener que preocuparse de liberar esa memoria manualmente simplifica mucho el código y evita errores graves.
- Interoperabilidad: si en el futuro quisiéramos aprovechar una biblioteca ya existente escrita en otro lenguaje .NET, o integrar BiblioTech con otros sistemas, la interoperabilidad de C# lo hace posible sin reescribir todo desde cero.
-
La línea quedaría así:
Console.WriteLine("Bienvenido a BiblioTech, María!");Simplemente se sustituye el texto entre comillas por el nuevo mensaje; la estructura del resto de la instrucción (
Console.WriteLine(...)y el punto y coma final) no cambia.
Conclusión
En esta lección has conocido C# a vista de pájaro: qué es, qué lo hace especial (tipado estático, seguridad de tipos, gestión automática de memoria, interoperabilidad), un poco de su historia y evolución, y por qué sigue siendo una opción sólida para aprender a programar profesionalmente. También has conocido el proyecto que nos acompañará durante todo el curso, BiblioTech, y has visto tu primer fragmento de código C# real.
Todavía no tienes nada instalado en tu ordenador para escribir y ejecutar tus propios programas. Eso es exactamente lo que resolveremos en la siguiente lección, Configuración del Entorno de Desarrollo, donde instalarás el SDK de .NET, elegirás un editor de código y comprobarás que todo funciona correctamente antes de crear tu primer proyecto real.
Curso de Programación en C#
Módulo 1: Introducción a C#
- Introducción a C#
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Arrays y Cadenas de Texto
Módulo 2: Estructuras de Control
Módulo 3: Programación Orientada a Objetos
- Clases y Objetos
- Métodos
- Constructores y Destructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
- Structs y Records: Tipos por Valor y por Referencia
Módulo 4: Conceptos Avanzados de C#
- Interfaces
- Delegados y Eventos
- Pattern Matching y Características Modernas de C#
- Genéricos
- Colecciones
- LINQ (Consulta Integrada en el Lenguaje)
- Programación Asíncrona
Módulo 5: Trabajando con Datos
- Entrada/Salida de Archivos
- Serialización
- Conectividad con Bases de Datos
- Entity Framework
- Trabajo con JSON y Consumo de APIs REST
Módulo 6: Temas Avanzados
- Reflexión
- Atributos
- Programación Dinámica
- Gestión de Memoria y Recolección de Basura
- Multihilo y Programación Paralela
Módulo 7: Construcción de Aplicaciones
- Formularios de Windows
- WPF (Windows Presentation Foundation)
- ASP.NET Core
- Blazor
- Xamarin y .NET MAUI
Módulo 8: Mejores Prácticas y Patrones de Diseño
- Estándares de Codificación y Mejores Prácticas
- Patrones de Diseño
- Inyección de Dependencias e Inversión de Control
- Pruebas Unitarias
- Revisión y Refactorización de Código
