No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Tipos registro y estructura

10/19
Recursos

Aportes 9

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

RECORD
En C#, un “record” es un tipo de referencia inmutable introducido en C# 9.0 que se utiliza para modelar datos simples y valores inmutables. Los “records” son especialmente útiles cuando tienes un conjunto de datos que no cambia después de su creación y deseas garantizar que no se pueda modificar. Algunas de las ventajas y casos de uso comunes de los “records” incluyen:

Inmutabilidad: Los “records” son inmutables de forma predeterminada, lo que significa que sus valores no pueden cambiar después de que se hayan creado. Esto garantiza que los datos permanezcan consistentes y predecibles.

Facilidad de Igualdad: Los “records” facilitan la comparación de igualdad de objetos basándose en sus valores en lugar de sus referencias. Esto es útil al realizar comparaciones de igualdad en lugar de referencia.

Sintaxis Concisa: Los “records” tienen una sintaxis concisa para definir propiedades y métodos. Puedes definir propiedades de solo lectura de manera abreviada.

Desestructuración: Los “records” admiten la desestructuración, lo que significa que puedes descomponer un objeto “record” en sus componentes individuales.

Patrones de Coincidencia: Los “records” funcionan bien con patrones de coincidencia, lo que facilita la escritura de código que responde a diferentes combinaciones de valores de objetos “record”.

Usos Comunes: Los “records” son ideales para modelar tipos de datos simples como puntos, vectores, coordenadas geográficas, datos de sensores y otros valores inmutables.

Aporte Los records son especialmente útiles cuando necesitas representar datos que no cambian después de su creación, como datos de entidades. Algunas de las características clave de los records incluyen la inmutabilidad, la facilidad de comparación y la concisión en la sintaxis de definición.

Aporte:

Los structs son tipos de valor, por lo que no pueden compararse por referencia. No existe una implementación por defecto de == para structs porque la comparación por miembros no siempre es una comparación válida, dependiendo del tipo.

Con una clase, si comparamos igualdad, la consola muestra que no son iguales, a pesar de tener los mismos valores.

// Superman 1
var superman1 = new SuperHero();

superman.Id = 1;
superman.Name = "Superman";
superman.SecretIdentity = "Clark Ken";
superman.City = "Metropolis";

// Superman 2
var superman2 = new SuperHero();

superman.Id = 1;
superman.Name = "Superman";
superman.SecretIdentity = "Clark Ken";
superman.City = "Metropolis";

// Comparo
Console.WriteLine(superman1 == superman2); // Console: False

class SuperHero
{
    public int Id;
    public string Name;
    public string SecretIdentity;
    public string City;
    public List<SuperPower> SuperPowers;
    public bool CanFly;
}

Cuando usamos un registro (record), la consola sí muestra una igualdad

SuperHeroRecord superHeroRecord1 = new (1, "Superman", "Clark Ken");
SuperHeroRecord superHeroRecord2 = new(1, "Superman", "Clark Ken");

// Comparo
Console.WriteLine(superHeroRecord1 == superHeroRecord2); // Console: True

public record SuperHeroRecord(int Id, string Name, string SecretIdentity);
Despues de tantos años, veo una manera ejemplar de como poder hacer notar las diferencias sin palabras domingueras ni explicaciones rebuscadas, super entendido, agradezco al excelente maestro! KUDOS!!
Gran clase!!!
**CLASE**: la forma en la que se crean o se comparan los elementos dentro del código es a través de referencias. Eso significa que cada vez que creamos un objeto con esa clase, se va a apartar una posición de memoria para almacenar los datos de ese objeto y se le va a asignar un identificador a esa posición de memoria. Si creamos otro objeto con exactamente los mismos valores de todas maneras va a ser un objeto diferente ya que cada uno de los objetos va a tener una referencia diferente.
```c# //Compare Hero #4 vs. Hero #5 Hero.HeroRecord batman = new ( 4, "Bruce Wayne", "Batman", false, new List<Colors> { blackColor, yellowColor }, true, new List<SuperPower> { strengthPower }); Hero.HeroRecord spiderman = new(5, "Tobey Maguire", "Spider-man", false, new List<Colors> { blueColor, redColor }, true, new List<SuperPower> { strengthPower }); Console.WriteLine(batman == spiderman); //Output: False ```
`public record SuperHeroRecord(int id, string nombre, string IdentidadSecreta);` `SuperHeroRecord superHeroRecord = new(1, "SuperMan", "Clark kent");`