Módulo 00: Introducción a .NET y C#
Objetivos del módulo
- Entender qué es .NET y para qué sirve
- Conocer la historia y evolución de .NET
- Comprender qué es C# y por qué es uno de los lenguajes más demandados
- Conocer el ecosistema de .NET 10
- Entender la diferencia entre .NET Framework, .NET Core y .NET (moderno)
1. ¿Qué es .NET?
.NET (pronunciado “dot net”) es una plataforma de desarrollo gratuita y de código abierto creada por Microsoft. Permite crear aplicaciones de todo tipo:
- Aplicaciones de escritorio (Windows)
- Aplicaciones web (con ASP.NET)
- APIs y servicios web
- Aplicaciones móviles (con .NET MAUI)
- Juegos (con Unity)
- Aplicaciones en la nube (Azure)
- Aplicaciones de consola
- Microservicios
- Internet de las cosas (IoT)
📘 Concepto: Piensa en .NET como una “caja de herramientas” gigante que te proporciona todo lo necesario para construir cualquier tipo de software. Igual que un carpintero necesita un martillo, un destornillador y una sierra, un programador necesita herramientas para compilar código, acceder a bases de datos, crear interfaces gráficas, etc. .NET te da todo eso.
¿Por qué elegir .NET?
| Ventaja | Descripción |
|---|---|
| Gratuito | No cuesta nada. Es 100% de código abierto |
| Multiplataforma | Funciona en Windows, macOS y Linux |
| Rendimiento | Es uno de los frameworks más rápidos del mercado |
| Ecosistema maduro | Miles de bibliotecas disponibles via NuGet |
| Gran comunidad | Millones de desarrolladores, documentación extensa |
| Respaldado por Microsoft | Soporte a largo plazo garantizado |
| Muy demandado | Excelente mercado laboral y salarios competitivos |
2. Historia de .NET
Conocer la historia nos ayuda a entender por qué .NET es como es hoy:
Línea temporal de .NET
═══════════════════════════════════════════════════════════
2002 ── .NET Framework 1.0
Primera versión. Solo funcionaba en Windows.
Microsoft crea C# como lenguaje principal.
2005 ── .NET Framework 2.0
Se añaden los genéricos (List<T>, Dictionary<K,V>).
2007 ── .NET Framework 3.5
Se introduce LINQ (consultas integradas en el código).
2012 ── .NET Framework 4.5
Soporte para async/await (programación asíncrona).
2016 ── .NET Core 1.0 ★ REVOLUCIÓN
.NET se hace MULTIPLATAFORMA (Windows, macOS, Linux).
.NET se hace de CÓDIGO ABIERTO.
Nuevo modelo: rápido, modular y moderno.
2019 ── .NET Core 3.0
Soporte para WPF y Windows Forms en .NET Core.
2020 ── .NET 5 ★ UNIFICACIÓN
Se elimina el nombre "Core". Ahora es simplemente ".NET".
Se unifican .NET Framework y .NET Core en una sola plataforma.
2021 ── .NET 6 (LTS)
Soporte a largo plazo (3 años). Top-level statements.
2022 ── .NET 7
Mejoras de rendimiento. .NET MAUI estable.
2023 ── .NET 8 (LTS)
Soporte a largo plazo. Native AOT mejorado.
2024 ── .NET 9
C# 13. Mejoras en rendimiento, AI integrado,
mejoras en ASP.NET Core, Blazor y .NET MAUI.
2025 ── .NET 10 (LTS) ★ VERSIÓN ACTUAL
C# 14. Soporte a largo plazo (3 años).
Mejoras en JIT, desvirtualización, NativeAOT,
criptografía post-cuántica, extensiones de tipo,
propiedades respaldadas por campos (field keyword).
Esta es la versión que usaremos en el curso.
⚠️ Importante: En internet encontrarás muchos tutoriales que hablan de “.NET Framework” (el antiguo, solo para Windows). Nosotros usaremos .NET 10, que es la versión moderna, multiplataforma y de código abierto. Además, .NET 10 es una versión LTS (Long Term Support), lo que significa que tendrá soporte oficial de Microsoft durante 3 años. Si ves algún tutorial que habla de
.NET Framework 4.x, ten en cuenta que es la versión antigua.
3. ¿Qué es C#?
C# (pronunciado “C sharp”) es un lenguaje de programación creado por Microsoft específicamente para la plataforma .NET. Es:
- Orientado a objetos: organiza el código en “clases” y “objetos” (lo veremos en detalle más adelante)
- Fuertemente tipado: cada variable tiene un tipo definido (número, texto, etc.)
- Moderno: incorpora constantemente características nuevas del lenguaje
- Seguro: el compilador detecta muchos errores antes de ejecutar el programa
- Versátil: sirve para todo tipo de aplicaciones
C# vs otros lenguajes
| Característica | C# | Java | Python | JavaScript |
|---|---|---|---|---|
| Tipado | Fuerte/estático | Fuerte/estático | Dinámico | Dinámico |
| Rendimiento | ★★★★★ | ★★★★ | ★★ | ★★★ |
| Facilidad de aprendizaje | ★★★★ | ★★★ | ★★★★★ | ★★★★ |
| Ecosistema empresarial | ★★★★★ | ★★★★★ | ★★★ | ★★★★ |
| Multiplataforma | ✅ | ✅ | ✅ | ✅ |
| Aplicaciones de escritorio | ★★★★★ | ★★★ | ★★ | ★★★ (Electron) |
| Desarrollo web | ★★★★★ | ★★★★ | ★★★★ | ★★★★★ |
| Demanda laboral | ★★★★ | ★★★★★ | ★★★★★ | ★★★★★ |
📘 Concepto: C# es un lenguaje muy similar a Java en sintaxis, pero con muchas características modernas que lo hacen más productivo. Si aprendes C#, te resultará muy fácil aprender Java después (y viceversa).
Versiones de C#
La versión actual es C# 14, que viene incluida con .NET 10. La versión de C# está siempre vinculada a la versión de .NET:
| .NET | C# |
|---|---|
| .NET 10 | C# 14 |
| .NET 9 | C# 13 |
| .NET 8 | C# 12 |
| .NET 7 | C# 11 |
| .NET 6 | C# 10 |
Novedades de C# 14
Algunas de las características más destacadas de C# 14 (que iremos viendo a lo largo del curso):
| Característica | Descripción |
|---|---|
Propiedades con field | Acceso al campo de respaldo generado por el compilador mediante la palabra clave field |
nameof para genéricos abiertos | nameof(List<>) ahora devuelve el nombre del tipo sin necesidad de argumento de tipo |
Bloques extension | Nuevos bloques para definir métodos y propiedades de extensión estáticos e instancia |
| Asignación condicional null | Uso del operador ?. para asignación condicional |
| Constructores parciales | Soporte para constructores de instancia parciales |
| Modificadores en lambdas | ref, in, out en expresiones lambda sin especificar tipos |
4. Arquitectura de .NET 10
Para entender cómo funciona .NET, veamos sus componentes principales:
┌─────────────────────────────────────────────────────┐
│ TU APLICACIÓN │
│ (código que tú escribes en C#) │
├─────────────────────────────────────────────────────┤
│ BIBLIOTECAS DE .NET │
│ (System.IO, System.Net, System.Linq, etc.) │
│ Miles de clases ya escritas que puedes usar │
├─────────────────────────────────────────────────────┤
│ RUNTIME (CLR) │
│ Common Language Runtime │
│ - Compila tu código a lenguaje máquina (JIT) │
│ - Gestiona la memoria automáticamente (GC) │
│ - Maneja excepciones │
│ - Proporciona seguridad │
├─────────────────────────────────────────────────────┤
│ SISTEMA OPERATIVO │
│ Windows / macOS / Linux │
└─────────────────────────────────────────────────────┘
Conceptos clave
El compilador
Cuando escribes código en C#, no se ejecuta directamente. Primero, el compilador traduce tu código C# a un lenguaje intermedio llamado IL (Intermediate Language). Después, el JIT (Just-In-Time) compiler traduce ese IL a código máquina específico para tu procesador.
Código C# ──→ Compilador ──→ IL (Intermediate Language) ──→ JIT ──→ Código máquina
(lo que (dotnet (lenguaje intermedio, (en el (lo que
escribes) build) multiplataforma) momento, entiende
lo traduce tu CPU)
al ejecutar)
💡 Consejo: No necesitas entender en profundidad cómo funciona el compilador para empezar a programar. Solo necesitas saber que cuando ejecutas
dotnet run, tu código C# se compila y se ejecuta automáticamente.
El Garbage Collector (Recolector de basura)
En C#, no necesitas preocuparte por liberar la memoria manualmente (como en C o C++). El Garbage Collector (GC) se encarga automáticamente de liberar la memoria que ya no se usa.
📘 Concepto: Imagina que estás cocinando y cada vez que usas un plato, alguien lo recoge y lo lava automáticamente. Eso es el Garbage Collector: se encarga de “limpiar” la memoria que ya no necesitas, para que tú puedas concentrarte en programar.
NuGet
NuGet es el gestor de paquetes de .NET. Es como una “tienda” donde puedes descargar bibliotecas que otros programadores han creado y compartido. Por ejemplo, si necesitas trabajar con archivos Excel, en lugar de programar todo desde cero, puedes descargar un paquete NuGet que ya lo hace.
5. ¿Qué puedes construir con .NET 10?
| Tipo de aplicación | Tecnología | Descripción |
|---|---|---|
| Consola | .NET 10 | Programas de línea de comandos (lo que haremos en este curso) |
| Web (servidor) | ASP.NET Core | Páginas web, APIs REST, aplicaciones web completas |
| Web (cliente) | Blazor | Interfaces web interactivas escritas en C# (sin JavaScript) |
| Escritorio Windows | WPF / WinForms | Aplicaciones con interfaz gráfica para Windows |
| Multiplataforma | .NET MAUI | Una sola base de código para Windows, macOS, iOS y Android |
| Juegos | Unity | El motor de juegos más popular del mundo usa C# |
| Nube | Azure + .NET | Microservicios, funciones serverless, contenedores |
| IA / Machine Learning | ML.NET | Modelos de inteligencia artificial en C# |
6. Tu primer vistazo a un programa en C#
Aunque todavía no hemos instalado nada, veamos cómo luce un programa simple en C#:
// Este es un comentario: el compilador lo ignora.
// Sirve para dejar notas a otros programadores (o a ti mismo).
// Este programa simplemente muestra un mensaje en la pantalla.
Console.WriteLine("¡Hola, mundo! Bienvenido al curso de C#");
Explicación línea por línea:
| Línea | Código | Explicación |
|---|---|---|
| 1-3 | // Este es un comentario... | Las líneas que empiezan con // son comentarios. El compilador las ignora completamente. Sirven para documentar tu código. |
| 5 | Console.WriteLine(...) | Console es una clase de .NET que representa la consola (la ventana negra del terminal). WriteLine es un método (una acción) que escribe un texto y salta a la siguiente línea. |
| 5 | "¡Hola, mundo!..." | El texto entre comillas dobles es una cadena de texto (string). Es el mensaje que aparecerá en pantalla. |
| 5 | ; | El punto y coma al final indica que la instrucción ha terminado. En C#, toda instrucción debe terminar con ;. |
💡 Consejo: Este estilo simplificado (sin
namespace, sinclass Program, sinstatic void Main) se llama top-level statements y está disponible desde .NET 6. Es perfecto para aprender porque reduce el código innecesario. Más adelante veremos la estructura completa.
7. Glosario de términos
Estos son los términos que hemos visto en este módulo y que usaremos a lo largo del curso:
| Término | Definición |
|---|---|
| .NET | Plataforma de desarrollo de Microsoft, gratuita y de código abierto |
| C# | Lenguaje de programación principal de .NET |
| SDK | Kit de desarrollo de software. Contiene todo lo necesario para programar con .NET |
| Runtime | Entorno de ejecución que ejecuta tus programas |
| CLR | Common Language Runtime. El motor que ejecuta el código .NET |
| IL | Intermediate Language. Código intermedio al que se compila C# |
| JIT | Just-In-Time compiler. Traduce IL a código máquina al ejecutar |
| GC | Garbage Collector. Libera memoria automáticamente |
| NuGet | Gestor de paquetes de .NET (como npm en JavaScript o pip en Python) |
| Compilador | Programa que traduce tu código C# a IL |
| Top-level statements | Sintaxis simplificada de C# que permite escribir código sin ceremony |
| Multiplataforma | Funciona en Windows, macOS y Linux |
Resumen
- .NET 10 es la última versión de la plataforma de desarrollo de Microsoft (versión LTS con 3 años de soporte)
- Es gratuita, de código abierto y multiplataforma
- C# 14 es el lenguaje principal, moderno y con gran demanda laboral
- .NET incluye un compilador, un runtime (CLR), un garbage collector y miles de bibliotecas
- Con .NET puedes crear cualquier tipo de aplicación
- NuGet es el gestor de paquetes para añadir funcionalidades
- En el siguiente módulo instalaremos .NET 10 y escribiremos nuestro primer programa
| Navegación | |
|---|---|
| Siguiente módulo: Entorno de desarrollo → |