Quando abbiamo un oggetto e vogliamo verificare che abbia certe caratteristiche (ad esempio che una o più proprietà abbiano un certo valore), possiamo accedere alle proprietà in modo diretto e verificarne il valore. Tuttavia, con l'introduzione del Pattern Matching, possiamo scrivere il codice in modo dichiarativo e non imperativo. Nel prossimo esempio vediamo come usare sia la tecnica imperativa che quella dichiarativa per effettuare lo stesso controllo.
List<Point> x = [
new(1,0),
new(2,5),
new(1,4),
new(10,33),
];
//Pattern matching
var r1 = x.Where(item => item is { X: >= 2, Y: < 20 });
//Imperativa
var r2 = x.Where(item => item.X >= 2 && item.Y < 20);Come si vede nell'esempio, col pattern matching non specifichiamo come accedere alle proprietà, ma usiamo la parola chiave is per comparare l'oggetto item con un pseudo oggetto che descrive le proprietà e l'espressione che ricerchiamo.
La differenza tra un approccio e l'altro è stilistica da un lato e tecnica dall'altro. Nel caso della modalità imperativa, il nostro codice viene compilato così com'è, nel caso del pattern matching, il compilatore può effettuare ottimizzazioni senza che noi ce ne accorgiamo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Gli oggetti CallOut di Expression Blend 4.0
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Sfruttare una CDN con i bundle di ASP.NET
- Le DirectInk API nella Universal Windows Platform
- Inserire le news di Punto Informatico nel proprio sito


