Está en la página 1de 2

Novedades de C# 9.

Artículo

15/02/2023

Tiempo de lectura: 20 minutos

10 colaboradores

C# 9.0 agrega las siguientes características y mejoras al lenguaje C#:

Registros

Establecedores de solo inicialización

Instrucciones de nivel superior

Mejoras de coincidencia de patrones

Rendimiento e interoperabilidad

Enteros con tamaño nativos

Punteros de función

Supresión de la emisión de la marca localsinit

Características de ajuste y nalización

Expresiones new con tipo de destino

Funciones anónimas static

Expresiones condicionales con tipo de destino

Tipos de valor devueltos de covariante

Compatibilidad con extensiones GetEnumerator para bucles foreach

Parámetros de descarte lambda

Atributos en funciones locales

Compatibilidad con generadores de código

Inicializadores de módulo

Nuevas características para métodos parciales

Ola de advertencias 5

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

Puede descargar el SDK de .NET más reciente de la página de descargas de .NET.

Tipos de registro

C# 9.0 introduce los tipos de registro. Se usa la palabra clave record para de nir un tipo de
referencia que proporciona funcionalidad integrada para encapsular los datos. Puede crear
tipos de registros con propiedades inmutables mediante parámetros posicionales o sintaxis de
propiedades estándar:

C#

Copiar

public record Person(string FirstName, string LastName);

C#

Copiar

public record Person

public string FirstName { get; init; } = default!;

public string LastName { get; init; } = default!;

};

También puede crear tipos de registros con propiedades y campos mutables:

C#

fi
fi
Copiar

public record Person

public string FirstName { get; set; } = default!;

public string LastName { get; set; } = default!;

};

Aunque los registros pueden ser mutables, están destinados principalmente a admitir modelos
de datos inmutables. El tipo de registro ofrece las siguientes características:

Sintaxis concisa para crear un tipo de referencia con propiedades inmutables

Comportamiento útil para un tipo de referencia centrado en datos:

Igualdad de valores

Sintaxis concisa para la mutación no destructiva

Formato integrado para la presentación

Compatibilidad con las jerarquías de herencia

Puede utilizar tipos de estructura para diseñar tipos centrados en datos que proporcionen
igualdad de valores y un comportamiento escaso o inexistente. Pero, en el caso de los
modelos de datos relativamente grandes, los tipos de estructura tienen algunas desventajas:

No admiten la herencia.

Son menos e caces a la hora de determinar la igualdad de valores. En el caso de los tipos de
valor, el método ValueType.Equals usa la re exión para buscar todos los campos. En el caso
de los registros, el compilador genera el método Equals. En la práctica, la implementación de
la igualdad de valores en los registros es bastante más rápida.

Usan más memoria en algunos escenarios, ya que cada instancia tiene una copia completa de
todos los datos. Los tipos de registro son tipos de referencia, por lo que una instancia de
registro solo contiene una referencia a los datos.

Sintaxis posicional para la de nición de propiedad

fi
fi
fl

También podría gustarte