Novedades de C# 13

C# 13 incluye las siguientes características nuevas. Puede probar estas características con la versión más reciente de Visual Studio 2022 o el SDK de .NET 9.

C# 13 es compatible con .NET 9. Para obtener más información, vea Control de versiones del lenguaje C#.

Puede descargar el SDK de versión preliminar de .NET 9 más reciente desde la página de descargas de .NET. También puede descargar Visual Studio 2022 en versión preliminar, que incluye el SDK de la versión preliminar de .NET 9.

Las nuevas características se agregan a la página "Novedades de C#" cuando están disponibles en versiones preliminares públicas. La sección conjunto de trabajo de la página de estado de características de roslyn realiza un seguimiento cuando se combinan las próximas características en la rama principal.

Nota:

Estamos interesados en sus comentarios sobre estas características. Si encuentra problemas con cualquiera de estas nuevas características, cree un nuevo problema en el repositorio dotnet/roslyn.

Nueva secuencia de escape

Puede usar \e como una secuencia de escape literal de caracteres para el carácter de ESCAPE (U+001B en unicode). Anteriormente, se usaba \u001b o \x1b. No se recomendaba usar \x1b porque si los caracteres que seguían a 1b eran dígitos hexadecimales válidos, estos caracteres se convertían en parte de la secuencia de escape.

Tipos naturales de grupo de métodos

Esta característica realiza pequeñas optimizaciones para solucionar sobrecargas con grupos de métodos. En el comportamiento anterior, el compilador construía el conjunto completo de métodos de candidatos para un grupo de métodos. Si se necesitaba un tipo natural, el tipo natural se determinaba a partir del conjunto completo de métodos candidatos.

El nuevo comportamiento consiste en eliminar el conjunto de métodos candidatos en cada ámbito, quitando los métodos candidatos que no son aplicables. Normalmente, estos son métodos genéricos con aridad incorrecta o restricciones que no se cumplen. El proceso continúa hasta el siguiente ámbito externo solo si no se ha encontrado ningún método candidato. Este proceso sigue más detenidamente el algoritmo general para la resolución de sobrecargas. Si todos los métodos candidatos encontrados en un ámbito determinado no coinciden, el grupo de métodos no tiene un tipo natural.

Puede leer los detalles de los cambios en la especificación de propuesta.

Acceso a índices implícitos

El operador de índice implícito "from the end", ^, ahora se permite en una expresión de inicializador de objeto. Por ejemplo, ahora puede inicializar una matriz en un inicializador de objeto como se muestra en el código siguiente:

var v = new S()
{
    buffer =
    {
        [^1] = 0,
        [^2] = 1,
        [^3] = 2,
        [^4] = 3,
        [^5] = 4,
        [^6] = 5,
        [^7] = 6,
        [^8] = 7,
        [^9] = 8,
        [^10] = 9
    }
};

En versiones anteriores a C# 13, el operador ^ no se puede usar en un inicializador de objeto. Debe indexar los elementos desde el principio.

Consulte también