Kann jemand Rätsel lösen wieso bei private String Fehler anzeigt?
Hallo.
Also unter C# meckert der Fehler beim Private String Name.
Denn hier sind die Fehlermeldung:
Hat jemand ein ahnung welches Fehler da in Code steckt und wie ich das verbessern muss?
4 Antworten
Du sagst mit "private string", dass die Funktion einen String als Rückgabewert liefert (return). Allerdings gibt die Funktion nicht immer einen String zurück, sondern nur, wenn die if-Bedingungen erfüllt werden. Wenn bspw. die oberste if-Bedingung nicht erfüllt wird, wird von der Funktion kein String (bzw. überhaupt nichts) zurück gegeben.
Je nach dem was der Anwendungszweck ist, könnte eine einfache Lösung daraus bestehen, hinter dem letzten if-Block einen leeren String, oder einen String mit einer 0 (0 Bytes sent?) zurück zu geben:
private string GetBytesSent(...) {
if (...) {
...
}
return ""; // oder return "0";
}
Alternativ kannst du auch eine Exception werfen, wenn die if-Bedingung nicht erfüllt wird. Wenn eine Exception geworfen wird, muss auch nichts zurückgegeben werden.
Wenn wir schon dabei sind, immer einen Rückgabewert zu definieren, würde ich null bevorzugen. Dann muss aber (mit den Standardeinstellungen des Compilers) der Rückgabetyp nicht "string" sein, sondern "string?".
Die Fehlermeldungen haben nichts damit zu tun, dass die beiden Methoden als private derklariert sind.
Die Fehlermeldungen sagen klar, was bemängelt wird:
Die Methoden werden unter Umständen ohne Ausführung einer return-Anweisung beendet. Das sollte nicht sein, da sie als Funktionen definiert sind und deshalb immer einen Wert zurückgeben müssen.
Da die Funktionen die Zahl der verarbeiteten Bytes als Zeichenreihe zurückgeben, vermute ich, dass es sinnvoll wäre, in beiden Methoden als letzte Anweisung zu schreiben
return "0";
Die Fehlermeldungen kriegst du damit sicher weg, aber ob das völlig aufgabengerecht ist, musst du dir selbst überlegen.
Die Fehlermeldung ist doch ziemlich aussagekräftig.
Deine Funktion soll einen string zurüggeben.
Aber was gibt sie denn zurück, wenn die Bedingung
if(NetworkInterface.GetIsNetworkAvailable())
nicht erfüllt ist?
Du hast kein Rückgabewert, wenn die If-bedingungen nicht stimmen.