Om man gir variabler for store eller for små verdier kan man få overflyt/underflyt.
static byte pluss(byte tall1, byte tall2) { return (byte)(tall1+tall2); }
Om funksjonen pluss her gis verdiene 150 og 150 blir resultatet 44 fordi en byte kun kan inneholde verdiene 0 til 255.
Det som skjer her er at man begynner på 150, teller opp til og med 255, så begynner man ved 0 igjen før man fortsetter til 44.
For å forhindre dette kan man pakke inn sårbar kode med checked:
static byte pluss(byte tall1, byte tall2) { return checked( (byte)(tall1+tall2) ); }
static byte pluss(byte tall1, byte tall2) { checked { return (byte)(tall1+tall2); } }
Med verdier som gir overflyt/underflyt får man nå i stedet et unntak ved kjøring så man faktisk kan ta tak i problemet i stedet for at det forbigås i stillhet.
Et alternativ er å be kompilatoren om å skru på denne sjekkingen i stedet for, så man selv slipper å måtte pakke inn all tvilsom kode i checked.
I Visual Studio gjøres dette ved å først finne egenskapene for prosjektet:
Så velger man bygging og avansert:
Og til slutt huker man av for at overflyt/underflyt skal sjekkes:
Om du bruker en annen IDE/kompilator enn Visual Studio må du selv sjekke dokumentasjonen for å finne ut hvordan du slår på denne sjekkingen hos deg.