C# (pronunciado "C Sharp") es un lenguaje de programación moderno, fuertemente tipado y orientado a objetos, desarrollado por Microsoft para la plataforma .NET. Desde su aparición en el año 2000 ha evolucionado en cadencia anual y hoy, con C# 14 sobre .NET 10, es uno de los lenguajes más productivos y completos para construir servicios, aplicaciones de escritorio, videojuegos y soluciones cloud.
Características principales de C#
C# combina la eficiencia de un compilador con AOT opcional, la seguridad de los tipos de valor y de referencia, y una enorme librería estándar que cubre red, ficheros, concurrencia, criptografía o ciencia de datos.
- Tipado estático con inferencia: verificación de tipos en tiempo de compilación con
varyrecord. - Orientado a objetos y funcional: clases, interfaces, genéricos, delegados, lambdas, LINQ y pattern matching.
- Gestión automática de memoria: recolector de basura generacional;
Span<T>yMemory<T>para zero-copy. - Multiplataforma: ejecutable en Windows, Linux y macOS gracias al runtime .NET 10.
- Interoperabilidad: P/Invoke,
LibraryImporty bindings nativos para integrarse con sistemas existentes.
Ámbitos de aplicación
- Backend y APIs con ASP.NET Core, Minimal APIs y gRPC.
- Microservicios y cloud con Azure, contenedores y .NET AOT.
- Aplicaciones de escritorio con WPF, WinUI 3 y .NET MAUI.
- Videojuegos con Unity y Godot.
- Interfaz web con Blazor Server, Blazor WebAssembly y Blazor United.
- Ciencia de datos e IA con ML.NET y kernels de .NET Interactive.
C# moderno: la sintaxis que verás en este curso
El curso usa la sintaxis vigente en C# 14 / .NET 10, con los patrones que Microsoft recomienda hoy:
- File-scoped namespaces para reducir anidación.
- Top-level statements en programas sencillos de consola.
- Primary constructors en clases y structs (introducidos en C# 12, consolidados en 14).
- Collection expressions
[1, 2, 3]para crear arrays, listas o spans de forma uniforme. - Required members con
requiredpara forzar inicialización en tiempo de construcción. - Records y
withexpressions para modelos inmutables con igualdad por valor. - Pattern matching con patrones de tipo, propiedad, relacionales, de lista y
not/or/and. - Nullable reference types habilitados por defecto.
- Mejoras de interpolación y
raw string literalscon""". - Async/await y streams asíncronos
IAsyncEnumerable<T>para flujos de datos.
Ejemplo de estilo moderno que verás a lo largo del curso:
namespace Certidevs.Catalogo;
public sealed record Producto(string Sku, decimal Precio, bool Disponible);
public class Catalogo(IEnumerable<Producto> iniciales)
{
private readonly List<Producto> productos = [.. iniciales];
public IReadOnlyList<Producto> Disponibles() =>
[.. productos.Where(p => p.Disponible)];
public decimal PrecioMedio() =>
productos is { Count: > 0 }
? productos.Average(p => p.Precio)
: 0m;
}
Estructura del curso
El itinerario está diseñado para avanzar desde la sintaxis hasta las técnicas de modelado y concurrencia que se piden en el mundo profesional.
Introducción y entorno
Instalación del SDK de .NET 10, dotnet new, estructura de un proyecto, CLI, Visual Studio y VS Code con la extensión C# Dev Kit.
Sintaxis fundamental
Tipos primitivos, decimal, strings, interpolación, raw strings, operadores, control de flujo, funciones, lambdas y manejo de nulos con tipos de referencia anulables.
Programación orientada a objetos
Clases y record, encapsulación con propiedades, primary constructors, required members, herencia, métodos virtuales, interfaces con miembros por defecto, genéricos con restricciones y delegados.
Colecciones y LINQ
Arrays, List<T>, diccionarios, conjuntos, colas, pilas, Span<T>, colecciones inmutables y LINQ fluido con Where, Select, GroupBy, Join, Aggregate y operadores de conjunto.
Programación funcional
Funciones puras, inmutabilidad con record, pattern matching con switch expressions y patrones de lista, y composición con Func, Action y Predicate.
Programación asíncrona
Task, ValueTask, async/await, cancelación cooperativa con CancellationToken, IAsyncEnumerable<T>, paralelismo con Parallel.ForEachAsync y buenas prácticas para evitar deadlocks.
Testing
Pruebas unitarias con xUnit, Theory y InlineData, fixtures, mocks con Moq y pruebas de integración.
Metodología
Cada bloque combina lecciones conceptuales, ejercicios de código autocorregibles, tests tipo multiple-choice, puzles de rellenar huecos y un proyecto integrador final para consolidar todos los contenidos en una aplicación real.
Requisitos previos
No se requiere experiencia previa con C#, aunque es recomendable conocer los fundamentos de programación. El curso parte del cero y progresa hasta código listo para producción.
Objetivos
Al terminar dominarás el ecosistema .NET 10 con C# 14, podrás diseñar aplicaciones orientadas a objetos mantenibles, manipular datos con LINQ, escribir código asíncrono seguro y probar todo con xUnit.