Usare il pattern matching in C# per verificare se un oggetto ha determinate caratteristiche

di Stefano Mostarda, in .NET Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi