6 Stimmen

Console.WriteLine behandelt Null-String korrekt

Finden Sie einfach das Console.WriteLine kann bearbeiten null String richtig wie Console.WriteLine((string)null) ;

Kann ich davon ausgehen, dass die meisten Klassenbibliotheken korrekt mit Nullreferenzen umgehen?

10voto

Pieter van Ginkel Punkte 28696

Nein.

Das hängt ganz von der Methode ab, die Sie aufrufen. Siehe die MSDN-Dokumentation pro Methode, was zu erwarten ist, wenn Sie eine null .

Es ist niemals sicher, Annahmen über null wenn Sie eine fremde API oder Bibliothek aufrufen, insbesondere wenn Sie den Quellcode nicht als Referenz verwenden können. Lesen Sie immer die Dokumentationen. Und wenn die Dokumentation es nicht sagt, programmieren Sie defensiv.

Die Bibliotheksmethoden sind jedoch so programmiert, dass sie, wenn sie keine Antwort auf eine null wird eine Ausnahme ausgelöst, die Ihnen mitteilt, dass es sich um ein ungültiges Argument handelt.

5voto

Lasse V. Karlsen Punkte 364542

Nun... Ja.

Sie können davon ausgehen, dass (fast) alle Klassen Null-Referenzen korrekt behandeln.

Ich glaube jedoch, dass das, was Sie mit "richtig" meinen, nicht dasselbe ist wie das, was der Autor des Kurses meint.

Wenn Sie zum Beispiel versuchen, eine Datei zu öffnen und null für den Pfad zu der zu öffnenden Datei, wird es nicht stillschweigend fehlschlagen, sondern eine Ausnahme auslösen.

Wenn Sie das mit "richtig handhaben" meinen, dann ja. In der Tat hoffe ich, dass alle Klassen Null-Referenzen korrekt behandeln.

Erwarten Sie aber nicht, dass das Programm einfach weiterläuft, als wäre nichts geschehen.

0voto

Will Vousden Punkte 31058

Das hängt ganz davon ab, was Sie mit "korrekt" meinen und von der Methode selbst. Es sei denn, Sie meinen "könnte eine Ausnahme auslösen, weil es eine tatsächliche Zeichenfolge erwartet", dann nein.

0voto

Im Allgemeinen, wenn das Argument (egal ob String oder ein anderer Typ) erforderlich ist, um etwas zu tun, wird die Methode in der Regel mit Ausnahme abstürzen, wenn das Argument null ist.

Ein paar Beispiele:

  1. Dateien kann "null" Datei nicht öffnen, also --> Fehler.
  2. Parse --> kann "null" nicht parsen, daher --> Fehler. (Ja, sie haben TryParse in 2.0 hinzugefügt)

Wenn das Argument hingegen nicht erforderlich ist, "schluckt" die Methode in der Regel den Frosch, wenn er Null ist, und behandelt ihn als Standardwert, z. B. als leeren String. Im Fall der WriteLine-Methode des Console-Objekts ist es nicht wirklich brauchen die Zeichenfolge, es einfach in die Konsole zu schreiben, so dass es egal ist, wenn es null ist.

Also wie andere hier gesagt, es hängt davon ab, welche Methode Sie versuchen, zu verwenden, und Sie besser lesen, bevor Sie versuchen, Null-Werte übergeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X