Kortare kod med mönstermatchning i C# 7

with No Comments

Som programmerare vill man hålla sin kod så kort och så relevant som möjligt, för att öka överskådligheten och minska utrymmet för buggar. C# har genom åren utvecklats till att bli både mer kompakt och mer funktionellt, vilket inte minst syns på hur man skapar egenskaper (properties) i sina klasser.

I tidiga versioner av C# blev man hänvisad till att både deklarera och implementera egenskaperna manuellt, vilket typiskt ser ut så här:

Men från version 3 och framåt, har man tillgång till auto properties, vilket innebär att det räcker att deklarera att man vill ha en egenskap i sin klass, så fyller kompilatorn på med det som behövs.

I version 6 av C# kan man även tillhandahålla ett initialvärde tillsammans med deklarationen, vilket kortar ner koden ytterligare.

Dessutom, sedan version 6 har man även möjlighet att skriva egenskaper vars kropp består av funktionella uttryck som, istället för att lagra ett värde, utvärderas vid användning.

Nu i mars släpps Visual Studio 2017 tillsammans med version 7 av C#. Ett viktigt tillägg som bidrar till att hålla ner kodmängden och öka tydligheten är möjligheten att matcha på mönster (som åtminstone till en början är begränsat till typjämförelser). Om vi tänker oss en funktion som kan ta ett argument av vilken typ som helst, och att vi vill ha ett beteende om argumentet är ett värde av typen int, och ett annat beteende om värdet är av typen string, så skulle man kunna skriva så här i C# version 6:

I version 7 kan man direkt tala om hur parametern ska hanteras om den vore en int, respektive om den vore en string, vilket både kortar ner och förtydligar koden.

Samma funktionalitet uttryckt med switch istället för if ser ut så här:

Inom funktionell programmering är inte mönstermatchning begränsat till just typer, men möjligheten att mönstermatcha på typer är ändå ett efterlängtat tillskott till C#.

Leave a Reply