Die NullReferenceException ist eine Ausnahme, die vom Programm ausgelöst wird, wenn wir versuchen, auf einen Mitgliedstyp zuzugreifen, dessen Wert null ist. Das heißt, wenn wir versuchen, auf eine Variable zuzugreifen, die keinen Wert oder einen Nullwert enthält, wird eine Nullreferenzausnahme ausgelöst geworfen werden. Diese Ausnahme gilt für verschiedene Versionen von .NET, .NET Core und .Net Framework. Diese Referenzvariablen in C# stimmen gut mit den Zeigerkonzepten in C überein. Es gibt verschiedene Situationen, in denen die NullReferenceException auftritt, und es gibt mehrere Möglichkeiten, sie zu vermeiden oder zu lösen.
Syntax:
Folgen ist die Standardsyntax, die für die Implementierung der NullReferenceException verwendet wird:
public class NullReferenceException :SystemException
Die Null-Referenz-Ausnahme wird von Systemausnahmen geerbt, die grundsätzlich innerhalb von Objekten und in Ausnahmen zu finden sind. Wie wir wissen, ist dies eine der häufigsten Ausnahmen und es gibt verschiedene Möglichkeiten, damit umzugehen.
Um es einfach zu verstehen: Eine Null-Referenz-Ausnahme ist das Ergebnis eines Ereignisses, bei dem wir versuchen, auf eine Variable zuzugreifen, die kein anderes Objekt referenziert. Das Verweisen auf eine Referenz ist hier kein Problem, aber wenn eine Referenzvariable kein anderes Objekt referenziert, wird sie grundsätzlich als Null behandelt. Hier entsteht das Problem, wenn der Code auf einen Punkt verwiesen wird, der am Ende eine Null ergibt, und dann auf eine Ausnahme namens NullReferenceException stößt. Es kann verschiedene Szenarien geben, in denen das Programm eine Null-Referenz-Ausnahme auslöst. Wenn wir ein Programm ausführen und es auf die Nullreferenzausnahme stößt, sieht die Ausgabe etwa so aus:
Unbehandelte Ausnahme:
System.NullReferenceException: Objektverweis nicht auf die Instanz des Objekts festgelegt.
Da wir nun verstanden haben, worum es bei der Ausnahme geht und wie sie funktioniert, können wir dazu übergehen, die Ausnahme anhand von Beispielen richtig zu demonstrieren. Für unser erstes Beispiel, das sehr einfach ist, haben wir eine einfache Variable, die einen Nullwert enthält, und dann werden wir versuchen, diese Variable zu bearbeiten, aber da sie ein Nullwert ist, wird die Nullreferenzausnahme ausgelöst. Der Code für das Programm lautet wie folgt:
Code:
using System; public class SampleProgram { public static void Main() { string name = null; varval =name.ToString(); Console.WriteLine(val); } }
Code-Erklärung: Mit System angegeben haben wir unsere Klasse Sample, die öffentlich ist. Dann haben wir unsere statische void-Hauptanweisung, gefolgt von der Erstellung einer einfachen String-Variablen mit dem Namen „name“, und der zugewiesene Wert ist null, was bedeutet, dass der Variablen kein Wert zugewiesen wurde. Diese String-Variable ist hier wichtig, später erstellen wir eine weitere Variable namens val, in der wir versuchen, den Wert von name in einen String umzuwandeln. Schließlich haben wir eine print-Anweisung, die den Wert von name ausgibt, der nun mit ToString() konvertiert wird. Die Ausgabe finden Sie im unten angehängten Screenshot:
Ausgabe:
Bei ordnungsgemäßer Ausführung löst der Code einen Fehler aus, nämlich NullReferenceException. Und der Grund wird sein, dass, wenn wir versuchen, die ToString()-Methode aufzurufen, diese zum Variablennamen geht, aber unser Variablenname keinen Wert hat, also null. Und wie wir wissen, kann der Nullwert nicht mit ToString() konvertiert werden. Unser Code gibt also nur einen Fehler aus, was bedeutet, dass der Code wie erwartet ausgeführt wird.
Wie erläutert wurde das Programm durch eine Ausnahme beendet. Im Folgenden werden wir ein weiteres einfaches Beispiel demonstrieren, das wie erläutert zur gleichen Ausnahme führt.
Code:
using System; class SampleProgram { static void Main() { string val = null; if (val.Length == 0) { Console.WriteLine(val); } } }
Code-Erklärung: Ähnlich wie in unserem ersten Beispiel haben wir hier unseren Namespace und den ersten Aufruf, der die Hauptanweisung enthält. Dann haben wir unsere String-Variable mit dem Wert Null. Dies wird die Hauptvariable sein, die zu unserer erwarteten Ausnahme führen wird. Dann haben wir eine einfache if-Bedingung, bei der wir prüfen, ob die Länge unserer Variablen Null ist oder nicht, und wenn sie Null ist, geht es zum nächsten Schritt und gibt den Wert aus. Der Code wird jedoch nicht zur letzten Druckzeile verschoben, da innerhalb des if eine Ausnahme auftritt. Die Ausgabe finden Sie im unten angehängten Screenshot:
Ausgabe:
Hier ist die Ausgabe genau wie in unserem ersten Beispiel, „Unbehandelte Ausnahme“, da die Ausnahme dieselbe ist. Wir haben versucht, hier eine Funktion zu implementieren, aber wie erklärt, hat unsere Variable einen Nullwert, was uns zu einer Nullreferenzausnahme führt. Nachdem wir nun gesehen und verstanden haben, wie und warum diese Nullreferenzausnahme auftritt, ist es wichtig zu verstehen, wie wir sie vermeiden können, damit das Programm besser funktioniert.
The Null Reference Exception is not a major error, but one of the common ones and one of the basic and simple way to avoid the Null Reference Exception is to check the variable or property before moving ahead and accessing it. And a very basic way to do this is to check the variable within an if statement. We will demonstrate an example where we will avoid the occurrence of the exception and the code will move on.
Code:
using System; class SampleProgram { static void Main() { string val = null; if (val == null) { Console.WriteLine("\n Value to the variable is null."); } else{ Console.WriteLine(val); } } }
Output:
Code Explanation: Here we have our class which holds the main statement than a variable with a null value. Then we enter an if else statement, where the value of the variable is checked if it is null, the print statement will be printed and the program will terminate, if the value is not null, then it will move ahead and into else part, it will print the value. As expected our code printed that “Value to the variable is null.” because the value is null. If we try the same example with a string value, the program will proceed and the else part will be printed.
The NullReferenceException is encountered when we attempt to access a variable which holds a null value, it can be variable or object. The reference should not hold null value else the exception will be thrown. There are many situations where this can be seen and the simplest way to avoid the NullReferenceException is to check beforehand, before accessing the value.
Das obige ist der detaillierte Inhalt vonC# NullReferenceException. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!