Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C#-not all code paths return a value

overmatroos [03.10.2012 21:36:49]

#

Moi
Alla oleva palauttaa seuraavaa: 'ConsoleApplication3.Program.taistelut(int,int)': not all code paths return a value

Osaako joku sanoo miks?

static int taistelut(int attackValue1, int attackValue2)
{

    if (attackValue1 > attackValue2)
    {
        return 1;

    }

    else if (attackValue1 < attackValue2)
    {
        return 2;
    }

    else if (attackValue1 == attackValue2)
    {

        return -1;

    }


}

Mod. korjasi kooditagit!

Metabolix [03.10.2012 21:41:53]

#

Kääntäjän näkökulmasta vika on siinä, että jos mikään if-lause ei toteudu, funktio ei palauta mitään arvoa, vaikka sääntöjen mukaan tuon funktion kuuluu kaikissa tapauksissa palauttaa jotakin. Koodarin mielestä ehkä vika on siinä, että kääntäjä ei ymmärrä, että käytetyt if-lauseet kattavat kaikki mahdollisuudet (eli jokin if-lause toteutuu aina).

Funktion sisällön voi kirjoittaa toimivasti monellakin tavalla, ja minusta monet näistä vaihtoehdoista ovat myös selvempiä kuin nykyinen tapasi – itse asiassa aivan samasta syystä, jonka takia kääntäjäkin hylkää nykyisen koodisi. Yksi tapa on poistaa viimeinen if-lause eli kirjoittaa viimeinen return-rivi suoraan viimeiseen else-lohkoon.

Itse kirjoittaisin näin:

if (a < b) {
	return 1;
}
if (a > b) {
	return 2;
}
return -1;

overmatroos [03.10.2012 22:22:10]

#

Kiitos paljon. näin sitä aloittelleva oppii uutta..)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta