Heim >Backend-Entwicklung >C++ >Warum erzeugt mein C# -Coder einen Fehler 'Nicht alle Codepfade geben einen Wert zurück'?
c# Compiler Problem: Alle Codepfade, die durch Verarbeitung von Wert
Codeprüfung
Das Problem stammt nur von zwei Rückgaberücksachen in der Funktionsbehörde. Diese Aussagen werden nicht entfernt oder können von allen Zahlen zwischen 1 und 20 entfernt werden. Der Compiler benötigt jedoch alle möglichen Ausführungspfade in der Funktion, um den Wert zurückzugeben.
<code class="language-c#">{ for(int j = 1; j <= 20; j++) { if(num % j != 0) { return false; } else if(num % j == 0 && num == 20) { return true; } } }</code>
Lösung
Um diesen Fehler zu lösen, müssen Sie dem Code eine weitere Rückgabeanweisung hinzufügen, um die verbleibenden Ausführungspfade zu verarbeiten. Dieser Pfad zeigt an, dass der Zyklus abgeschlossen ist und keine Anzahl von Zahlen von 1 bis 20 entfernt werden kann.
Die verbesserte Lösungsbeschreibung:
<code class="language-c#">{ for(int j = 1; j <= 20; j++) { if(num % j != 0) { return false; } else if(num % j == 0 && num == 20) { return true; } } return true; //添加了缺少的 return 语句, 此处应为true,表示可以被1-20整除 }</code>im ursprünglichen Code ist zu streng. Nur wenn
gleich 20 ist und zurückgegeben werden kann, wenn es gleichzeitig entfernt wird. Wenn das Vielfache von 20, aber größer als 20 ist, gibt der Code keinen Wert zurück. Daher sollte der korrekte Code nach Ablauf des Zyklus standardmäßig zurückgeben, was angibt, dass die Zahl durch jede Zahl zwischen 1 und 20 entfernt werden kann. else if(num % j == 0 && num == 20)
wird nur zurückgegeben, wenn der Zyklus im Zyklus gefunden wird. num
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein C# -Coder einen Fehler 'Nicht alle Codepfade geben einen Wert zurück'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!