NET5: Record Type

NET5: Record Type
Tra le novità introdotte in net5 possiamo trovare i Record Type e personalmente li ho trovati molto interessanti.
In cosa consiste?
Dichiarare un Record Type non risulta molto diverso dal dichiarare una class (prendete con le pinze la frase) nella quale vi sono presenti solamente delle proprietà. Sappiate che queste proprietà non saranno modificabili una volta istanziato il nuovo oggetto di tipo record.
Dichiarazione
Come primo passaggio per utilizzare un Record Type dobbiamo procedere alla sua definizione
|
|
Sappiate che amo la pizza e trovo illegale/immorale essere perennemente in zona rossa con le pizzerie chiuse. L’esempio non è stato casuale, ve lo posso garantire.
Ora non ci resta che istanziare per la prima volta un oggetto di tipo record
|
|
Se vi siete accorti di avere definito male una proprietà di “pizza” sappiate che non potete cambiare il suo valore al volo. Dovrete procedere con una nuova new. Infatti scrivendo la seguende istruzione
|
|
Code | Description |
---|---|
CS0200 | roperty or indexer ‘Pizza.Name’ cannot be assigned to – it is read only |
Equals
La parte veramente bella (che tanto mi piace) nell’utilizzare i Record Type riguarda il concetto di ugualianza. In che senso?
Supponiamo di volere ordinare una seconda pizza (non stupitevi, per me è la normalità quando esco in pizzeria post allenamento)
|
|
Ora proviamo a porci la domanda: Ho ordinato la stessa pizza?
|
|
Secondo voi quale valore avrà la variabile samePizza in questo caso?
Sappiate che true è la risposta corretta! Si, avete letto bene.
Abituati a lavorare con le classi forse vi sareste aspettati un false come ritorno, ma in questo caso grazie ai Record Type l’ugualianza sarà basata sui valori contenuti nelle proprietà definite in fase di creazione.
Vi ricordate che “menata” scrivere ogni volta un metodo “Equals(obj1, obj2)” ed al suo interno mettere una quintalata di if e return false?
Ecco, sappiate che se ripenso ad un progetto sul quale ho lavorato per anni ho ancora gli incubi notturni per questo motivo (e non solo per questo….)