checked

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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.