Övning – Inkrements- och minskningsvärden
De sista grundläggande åtgärderna som du lär dig i den här modulen är hur du ökar och minskar värden med hjälp av särskilda operatorer som är kombinationer av symboler.
Öka och minska
Ofta behöver du öka och/eller minska värden, särskilt när du skriver looplogik eller kod som interagerar med en datastruktur.
Operatorn += lägger till och tilldelar värdet till höger om operatorn till värdet till vänster om operatorn. Raderna två och tre i följande kodfragment är alltså desamma:
int value = 0; // value is now 0.
value = value + 5; // value is now 5.
value += 5; // value is now 10.
Operatorn ++ ökar värdet för variabeln med 1. Raderna två och tre i följande kodfragment är alltså desamma:
int value = 0; // value is now 0.
value = value + 1; // value is now 1.
value++; // value is now 2.
Samma tekniker kan användas för subtraktion, multiplikation med mera. Följande övningssteg lyfter fram några.
Anmärkning
Operatorer som +=, -=, *=, ++och -- kallas sammansatta tilldelningsoperatorer eftersom de förvärrar en åtgärd utöver att tilldela resultatet till variabeln. Operatorn += kallas specifikt för additionstilldelningsoperatorn .
Skriva kod för att öka och minska ett värde
Markera all kod i .NET-redigeraren och tryck på Ta bort eller Backspace för att ta bort den.
Ange följande kod i .NET-redigeraren:
int value = 1; value = value + 1; Console.WriteLine("First increment: " + value); value += 1; Console.WriteLine("Second increment: " + value); value++; Console.WriteLine("Third increment: " + value); value = value - 1; Console.WriteLine("First decrement: " + value); value -= 1; Console.WriteLine("Second decrement: " + value); value--; Console.WriteLine("Third decrement: " + value);Kör koden. Du bör se följande utdata:
First increment: 2 Second increment: 3 Third increment: 4 First decrement: 3 Second decrement: 2 Third decrement: 1
Anmärkning
I det "andra steget" använde du value += 1;. Du kan dock ha använt valfritt literalvärde int (eller en variabel) för att öka den mängden. Detsamma gäller för den "andra minskningen": value -= 1;.
Placera inkrement- och dekrementoperatorerna
Både inkrements- och minskningsoperatorerna har en intressant kvalitet – beroende på deras position utför de sin åtgärd före eller efter att de hämtat sitt värde. Med andra ord, om du använder operatorn före värdet som i ++value, sker inkrementet innan värdet hämtas.
value++ På samma sätt ökar värdet när värdet har hämtats.
Använd inkrementsoperatorn före och efter värdet
Ta bort koden från föregående steg och ange följande kod i .NET-redigeraren:
int value = 1; value++; Console.WriteLine("First: " + value); Console.WriteLine($"Second: {value++}"); Console.WriteLine("Third: " + value); Console.WriteLine("Fourth: " + (++value));Kör koden. Du bör se följande utdata:
First: 2 Second: 2 Third: 3 Fourth: 4
Observera den här kodraden:
Console.WriteLine($"Second: {value++}");
Det finns två steg på den här raden:
- Hämta variabelns
valueaktuella värde och använd det i stränginterpolationen. - Öka värdet.
Nästa kodrad bekräftar att värdet faktiskt har ökats.
Console.WriteLine("Third: " + value);
Tänk däremot på den sista kodraden:
Console.WriteLine("Fourth: " + (++value));
Här växlas driftordningen eftersom operatorn ++ placeras före operanden value.
- Öka värdet.
- Hämta det nya inkrementerade värdet för variabeln
valueoch använd det i strängåtgärden.
Även om det inte är absolut nödvändigt har du lagt till parenteser runt uttrycket (++value) för att förbättra läsbarheten. Att se så många + operatorer bredvid varandra verkar som om det kan missförstås av andra utvecklare. Stilistiska beslut som detta är subjektiva. Men eftersom du skriver koden en gång men läser den många gånger bör du prioritera läsbarhet.
Sammanfattning
Här är vad du har lärt dig hittills om matematiska operationer i C#:
- Använd sammansatta tilldelningsoperatorer som
+=,-=,*=,++och--för att utföra en matematisk åtgärd som ökning eller minskning och tilldela sedan resultatet till den ursprungliga variabeln. - Operatorerna för ökning och minskning fungerar olika beroende på om operatorn är före eller efter operanden.