Kann jemand Rätsel lösen wieso bei private String Fehler anzeigt?

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.

Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung

PWolff  18.08.2022, 13:47

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?".

1

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.

Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler

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.