Ignorieren NullReferenceException beim Lesen von Objekt-Eigenschaften
Gibt es eine Möglichkeit der direkten C# zu ignorieren NullReferenceException
(oder eine bestimmte Ausnahme für diese Angelegenheit), die für eine Reihe von Aussagen.
Dies ist nützlich, wenn Sie versuchen zu Lesen, Eigenschaften von einem Objekt deserialisiert enthalten viele null-Objekte.
Nachdem eine helper-Methode zum prüfen auf null-ein Weg sein könnte, aber ich bin auf der Suche nach etwas in der Nähe 'On Error Resume Next' (VB) bei einer block-Anweisung Niveau.
EDIT:Try-Catch wird, überspringen Sie die folgenden Aussagen auf Ausnahme
try
{
stmt 1;//NullReferenceException here, will jump to catch - skipping stmt2 and stmt 3
stmt 2;
stmt 3;
}
catch (NullReferenceException) { }
Beispiel: ich bin Deserialisieren eines XML-Nachricht an ein Objekt und dann versuchen, auf eine Eigenschaft wie
Message.instance[0].prop1.prop2.ID
nun prop2 könnte ein null-Objekt (weil es nicht existiert in der XML-Nachricht - ein optionales element in XSD). jetzt habe ich auf null prüfen muss für jedes element in der Hierarchie vor dem Zugriff auf die Blatt-element. ich.e ich habe zu prüfen, ob Instanz[0], prop1, prop2 nicht null sind, bevor Sie Zugriff auf die 'ID'.
Gibt es eine bessere Art und Weise, die vermeidet, dass null-Prüfung für jedes element in der Hierarchie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurz gesagt: Nein. Null-überprüfen Sie die Referenz, bevor Sie versuchen, es zu benutzen. Ein nützlicher trick sein könnte C# 3.0 Erweiterung Methoden... Sie ermöglichen erscheinen aufrufen, etwas auf einer null-Referenz, ohne Fehler:
Andere als das - vielleicht ein Teil der bedingte operator?
Ternären operator und/oder???? Betreiber nützlich sein können.
Sagen, dass Sie versuchen, den Wert von myItem.MyProperty.GetValue(), und MyProperty könnte null sein, und Sie möchten, um die Standardeinstellung ein leerer string:
Oder in dem Fall, in dem der return-Wert von GetValue null ist, aber Sie wollen, um die Standardeinstellung zu etwas:
Diese kombiniert werden können:
jetzt bin ich mit delegieren und NullReferenceException Umgang
Dank
Try-catch jede Zeile code, ohne die einzelnen try-catch-Blöcken
für die Idee
Ich würde mit dem Helfer-Methode. On Error Resume Next führt nur zu Wahnsinn.