C# CS8602 mit Console.ReadLine();?
servus,
kann mir jemand bei dem warning helfen? Ein "?" direkt nach dem string bringt nix
1 Antwort
Grundsätzlich kann ReadLine( ) einen null Wert zurückliefen. Somit führt ein Zugriff auf diesen Rückgabewert zu einer Null-Reference Exception. Deswegen warnt dich Visual Studio an dieser Stelle.
Prüfe bevor du das ToLower( ) aufrufst zunächst auf != null.
userInputString = Console.ReadLine();
if(userInputString != null)
{
//... dann das ToLower() und andere Zugriffe auf userInputString
userInputString.ToLower();
}
LG Knom
Woher ich das weiß:Studium / Ausbildung – Softwareentwickler mit 10 Jahren Berufserfahrung 💾
MagicalGrill
21.11.2022, 13:05
@PWolff
aber anfängergeeigneter
string? userInputStringNullable = Console.ReadLine().ToLower();
Hier fehlt aber auch ein Fragezeichen, weil null.ToLower() nicht so gut funktioniert ;)
PWolff
21.11.2022, 14:11
@MagicalGrill
Danke für die Korrektur.
Gemeint war
string? userInputStringNullable = Console.ReadLine();
Üblicherweise verwendet man ein null-Resultat als Grund für einen Schleifenabbruch. Hier könnte man einen null-Wert als "exit" oder als Leereingabe interpretieren. C#-üblich wäre
aber anfängergeeigneter
Was ein wenig Nachdenken erfordert: Natürlich kann der Standard-Input der Konsole niemals null zurückgeben - entweder tippt der Benutzer auf die Zeilenschaltung bzw. Enter-Taste oder das komplette Programm wird abgebrochen. Aber man kann den Eingabe-"Stream" der Konsole umbiegen, etwa auf eine Datei. Und dann kann es sehr wohl vorkommen, dass die Datei zuende ist, wenn das Programm versucht, die nächste Zeile zu lesen. (In der Kommandozeile des Systems:
)