C# 13‑15 llegan con índices negativos, campo implícito y jerarquías cerradas
Microsoft lanzó .NET 11 RC1 y con él nuevas versiones de C# que añaden índices negativos, la palabra clave field y tipos cerrados.

Microsoft ha puesto a disposición la versión .NET 11.0‑rc1 y, con ella, los compiladores de C# 13, 14 y 15. La novedad más visible son los índices negativos: ahora se accede a los últimos elementos con la sintaxis ^n (por ejemplo buffer[^1] devuelve el último). El código de ejemplo muestra cómo rellenar un array de diez enteros y recorrerlo, obteniendo la salida 20 19 … 11.
En C# 14 se introduce la palabra clave field, que permite referirse al backing field implícito dentro de un set sin declarar explícitamente una variable privada. El fragmento field = value; reemplaza al típico this._x = value;, simplificando la escritura de propiedades.
C# 14 también amplía el operador de asignación condicional ?.. Además de leer valores seguros, ahora se puede asignar: person?.Name = "The One"; sólo ejecuta la asignación si person no es null.
C# 15 aporta jerarquías cerradas mediante el modificador closed. Declara una clase base cuya lista de derivaciones está completa en tiempo de compilación, lo que permite que el compilador verifique exhaustividad en switch de tipos. El ejemplo muestra una clase Person cerrada con dos derivados (Employee y Retired) y un método IncomeLabel que cubre ambos casos.
Otra adición de C# 15 son los break y continue etiquetados, una característica presente en Java desde hace años. Permite romper o saltar a una iteración específica en bucles anidados usando etiquetas, facilitando el control de flujo en estructuras complejas.
Para probar estas características hay que instalar .NET 11.0‑rc1, activar el modo preview en el proyecto y establecer <TargetFramework>net11.0</TargetFramework>. El archivo de proyecto típico incluye <Preview>enable</Preview> y <ImplicitUsings>enable</ImplicitUsings>.
Estas mejoras buscan optimizar el rendimiento del código generado y ofrecer sintaxis más expresiva, aunque el ritmo de cambios sigue generando presión sobre equipos que deben mantener la compatibilidad. La adopción dependerá de la necesidad de las nuevas capacidades frente al coste de migrar a la última versión del framework.