Hoe kan ik de fout oplossen: “Onbereikbare code gedetecteerd”

Waarom krijg ik de foutmelding: “Onbereikbare code gedetecteerd”?
– De fout wordt weergegeven op de volgende regel:
String answer = GetAnswer();


Antwoord 1, autoriteit 100%

Het is gewoon omdat je code na de return-instructie komt.

Het return statement beëindigt de uitvoering van de methodewaarin het
verschijnt en geeft controle terug aan de aanroepmethode. Het kan ook terugkeren
een optionele waarde. Als de methode van het type void is, is de return-instructie
kan worden weggelaten.

Als het return-statement zich in een try-blok bevindt, wordt het final-blok, indien aanwezig, uitgevoerd voordat de besturing terugkeert naar de aanroepmethode.

http://msdn.microsoft. com/nl-nl/bibliotheek/1h3swy84%28v=vs.100%29.aspx

oplossing (duidelijk) :

verplaats de onbereikbare code voor de return-instructie.


Antwoord 2, autoriteit 28%

Onbereikbare code is een compiler waarschuwing, geen fout. Je hebt drie opties:

Het is onbereikbaar omdat de stroom van de methode eindigt bij de return-instructie, en dus nooit de onderstaande code zal uitvoeren. De compiler kan dit bepalen en dus rapporteren. Zoals ik al zei, dit zijn eigenlijk waarschuwingenvan de compiler en zullen een succesvolle build niet stoppen, tenzij je het project hebt geconfigureerd om waarschuwingen als fouten te behandelen.


Antwoord 3, autoriteit 8%

De verklaring:

return count;

verlaat de functie. Daarom,

answer = GetAnswer(); 
Response.Write(lblAntwoord);  

kan niet worden bereikt.


Antwoord 4

Het Return Verklaring beëindigt de uitvoering van een functie en retourneert de controle naar de oproepfunctie. Uitvoering wordt hervat in de oproepfunctie op het punt onmiddellijk na de oproep

Als Geen retour Verklaring verschijnt in een functie-definitie, RETOUR Keert automatisch terug naar de oproepfunctie nadat de laatste verklaring van de genoemde functie

wordt uitgevoerd

in uw code:

private int CountLeapYears(DateTime startDate)
{
    int count = 0;
    for (int year = startDate.Year; year <= DateTime.Now.Year; year++)
    {
        if (DateTime.IsLeapYear(year))
        {
            DateTime february29 = new DateTime(year, 2, 29);
            if (february29 >= startDate && february29 <= DateTime.Now.Date)
            {
                count++;
            }
        }
    }
    return count;//The Execution will be terminated here,the next lines will become unreachable 
    **String** answer = GetAnswer();
    Response.Write(lblAntwoord); 
}
}

MSDN LINK:

C: https://msdn.microsoft.com/en-us /Library/sta56yeb.aspx

C #: https://msdn.microsoft.com/en-us /Library/1h3swy84.aspx

Other episodes