Compartir a través de


Novedades de C# 15

C# 15 incluye las siguientes características nuevas. Puede probar estas características con la versión más reciente de Visual Studio 2026 o el SDK de versión preliminar de .NET 11:

C# 15 es la versión más reciente de C#. C# 15 se admite en .NET 11. Para obtener más información, vea Control de versiones del lenguaje C#.

Puede descargar el SDK de versión preliminar de .NET 11 más reciente desde la página de descargas de .NET. También puede descargar visual Studio 2026 insiders, que incluye el SDK de versión preliminar de .NET 11.

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.

Puede encontrar los cambios importantes introducidos en C# 15 en nuestro artículo sobre los cambios importantes.

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.

Argumentos de expresión de colección

Puede pasar argumentos al constructor o al método factory de la colección subyacente mediante un with(...) elemento como primer elemento de una expresión de colección. Esta característica permite especificar capacidad, comparadores u otros parámetros de constructor directamente dentro de la sintaxis de la expresión de colección.

En el ejemplo siguiente se muestra cómo pasar un argumento de capacidad a un List<T> constructor y un comparador a :HashSet<T>

string[] values = ["one", "two", "three"];

// Pass capacity argument to List<T> constructor
List<string> names = [with(capacity: values.Length * 2), .. values];

// Pass comparer argument to HashSet<T> constructor
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Hello", "HELLO", "hello"];
// set contains only one element because all strings are equal with OrdinalIgnoreCase

Puede obtener más información sobre los argumentos de expresiones de colección en el artículo de referencia del lenguaje sobre expresiones de colección o la especificación de características. Para obtener información sobre el uso de argumentos de expresión de colección en inicializadores de colección, vea Inicializadores de objeto y colección.