← Más ejemplos: C#, C++ y JavaScript
C# es el lenguaje de .NET, la plataforma de código abierto de Microsoft para servidores web, aplicaciones de escritorio, herramientas de línea de órdenes y videojuegos con Unity. Aquí tienes un curso desde cero, las rarezas del lenguaje, un test y ejemplos para tareas concretas. Todo el código se compiló con el SDK de .NET 10 (C# 14) y se ejecutó antes de publicarse.
Curso · 8 leccionesAprende C# desde cero, en españolDel primerdotnet run hola.cs a un proyecto con pruebas: tipos y null, control y colecciones, métodos y excepciones, clases y records, interfaces y genéricos, LINQ y async. Con esquemas, retos y el mensaje real del compilador en cada error.Ir al curso → RarezasLo que sorprende de C#Avisos de null que no impiden compilar, struct que se copian sin avisar, LINQ que se ejecuta dos veces, async void y otros comportamientos que conviene conocer antes de que te muerdan.Ver las rarezas → Test · 24 preguntas¿Compila o no?24 fragmentos de código: decide si compilan y qué escriben. Con la nota, los aciertos por lección y el mensaje real del compilador en cada respuesta.Hacer el test →Los ejemplos son archivos sueltos que se ejecutan con dotnet run archivo.cs, sin crear un proyecto: hace falta .NET 10 o posterior. Los que usan un paquete de NuGet lo declaran en la primera línea con #:package.
Datos: JSON, CSV, fechas y texto
- Leer y escribir JSON con System.Text.JsonSystem.Text.Json en .NET 10: serializar records, la trampa de las mayúsculas al leer, atributos, enums como texto, JsonNode sin clases, errores y…
- Leer y escribir CSVCSV en C# con .NET 10: escribir con las comillas bien puestas, por qué Split falla, un lector que respeta las comillas, la coma decimal y CsvHelper.
- Fechas y horas: DateTime, DateOnly y zonas horariasFechas en C# con .NET 10: DateOnly, TimeOnly, DateTime y DateTimeOffset, formatos por cultura, sumar y restar, ParseExact, zonas horarias y…
- Expresiones regularesExpresiones regulares en C# con .NET 10: IsMatch, la arroba de los patrones, grupos con nombre, Replace con funciones, GeneratedRegex y el retroceso…
- Ordenar y buscar en listas con LINQOrdenar y buscar en C# con .NET 10: Sort y comparaciones, texto en español con StringComparer, OrderBy y ThenBy, Find, First frente a FirstOrDefault…
Red, bases de datos y servidores
- Peticiones HTTP con HttpClientHttpClient en .NET 10: GET con la respuesta convertida en objetos, POST con JSON, por qué un 404 no lanza excepción y cómo limitar el tiempo de…
- Un servidor web mínimo con ASP.NET CoreUn servidor web en C# con ASP.NET Core y .NET 10: una API de tareas con MapGet y MapPost en un solo archivo, rutas con tipos, códigos de estado y…
- Base de datos SQLiteSQLite en C# con .NET 10 y Microsoft.Data.Sqlite: crear tablas, insertar con parámetros, ExecuteScalar, transacciones con Rollback y por qué nunca…
Programas de línea de órdenes
- Argumentos de la línea de órdenesArgumentos de la línea de órdenes en C# con .NET 10: el array args, dotnet run con –, leer opciones a mano, códigos de salida y System.CommandLine…
- Configuración con variables de entornoVariables de entorno en C# con .NET 10: GetEnvironmentVariable y valores por omisión, ver y cambiar las del proceso, y…
- Tareas en paralelo con Task y ParallelTareas en paralelo en C# con .NET 10: esperar varias cosas con Task.WhenAll, limitar con Parallel.ForEachAsync, repartir cálculos con Parallel.For y…
Archivos y carpetas
- Crear un archivo de textoFile.WriteAllText y WriteAllLines, añadir al final con AppendAllText y StreamWriter con using para escribir mucho.
- Leer un archivo de textoReadAllText y ReadAllLines para archivos pequeños, File.ReadLines para no cargarlo entero y StreamReader línea a línea.
- Crear, copiar y borrar archivosFile.Copy con overwrite, mover con File.Move, borrar con File.Delete y leer la información de un archivo.
- Renombrar un archivoFile.Move como forma de renombrar: qué pasa si el destino ya existe y las excepciones según lo que falte.
- Borrar un archivo o una carpetaPor qué File.Delete no falla si el archivo no existe, cuándo sí lanza excepción y Directory.Delete con y sin recursión.
- Crear un directorioDirectory.CreateDirectory crea la ruta entera y no falla si ya existe; también cómo crear una carpeta temporal.
- Crear y extraer un archivo ZIPArchivos ZIP en C# con .NET 10: comprimir una carpeta, ver y leer entradas sin extraer, crear un ZIP entrada a entrada, extraer sin sobrescribir y el…
XML
- Crear un archivo XMLLINQ to XML: XDocument, XElement y XAttribute en una sola expresión, la declaración XML y el escape automático.
- Leer un archivo XMLRecorrer elementos, leer atributos con conversión de tipos, filtrar con Where y qué pasa si un elemento no existe.
Todo el código se compiló con el SDK de .NET 10.0.403 y se ejecutó con .NET 10.0.14 en un contenedor limpio antes de publicarse; los mensajes del compilador y las salidas que aparecen están copiados de esa ejecución.
