NET5: Record Type - copia e modifica

NET5: Record Type

Tra le novità introdotte in net5 possiamo trovare i Record Type e personalmente li ho trovati molto interessanti. Se vi siete persi l’articolo con cui hanno debuttato sul mio blog vi invito a leggere NET5: Record Type scritto verso la fine di Gennaio. Per questo motivo passero’ dritto al cuore del contenuto.

Cosa? Oggi voglio spiegare come effettuare copie sfruttando with

with e copia di Record Type

Prima di mostrare come utilizzare with vi ripropongo la definizione del Record Type utilizzato nel precedente esempio.

Dichiarazione

Come primo passaggio per utilizzare un Record Type dobbiamo procedere alla sua definizione con una lieve modifica

1
2
3
4
5
6
7
8
9
public record Pizza
{
    public string Name { get; init; }
    public string Ingredients { get; init;}
    public decimal Price { get; init;}

    public Pizza(string name, string ingredients, decimal price)
        => (Name, Ingredients, Price) = (name, ingredients, price);
}

TIPS: Vi invito a notare la presenza di init; in ogni property definita. Ricordate che non e’ obbligatorio metterla su tutte le property definite.

Creazione “Record Type”

Ora non ci resta che istanziare per la prima volta un oggetto di tipo record

1
2
3
4
5
6
Pizza pizza = new Pizza
    (
        "Pizza Bla Bla Bla",
        "Fantasia del Pizzaiolo",
        10
    );

Copia “Record Type”

Se desiderate copiare il record type pizza in pizzaBis vi bastera’ eseguire il seguente codice

1
Pizza pizzaBis = pizza;

Copia & Modifica “Record Type”

E se invece volessi modificare qualche proprieta’ del mio Record Type come posso fare?

1
2
3
4
Pizza pizzaBis = pizza with
    { 
        Ingredients = "Bla bla bla" 
    };

Ricordate di utilizzare init; nella definizione altrimenti non sara’ possibile effettuare la copia.

Equals

Anche se utilizzate il with la logica Equals non cambia

1
2
3
4
bool samePizza = 
    (
        pizza == pizzaBis
    );

Ricordatevi solamente che -cambiando un valore- riceverete false come ritorno.