Die Variableninitialisierung in C# ist ein weiteres Beispiel dafür, dass C# Sicherheit betont. Einfach gesagt, verlangt der C#-Compiler, dass eine Variable mit einem Anfangswert initialisiert wird, bevor sie in einer Operation referenziert werden kann. Die meisten modernen Compiler kennzeichnen nicht initialisierte Variablen als Warnungen, aber der C#-Compiler behandelt dies als Fehler. Dadurch wird verhindert, dass wir versehentlich Müllwerte aus dem Speicher übernehmen, die von anderen Programmen hinterlassen wurden.
Es gibt zwei Methoden in der C#-Variableninitialisierung, um sicherzustellen, dass eine Variable initialisiert wird, bevor sie verwendet wird:
- Wenn eine Variable ein Feld in einer Klasse oder Struktur ist und nicht explizit initialisiert wird, wird ihr Wert beim Erstellen der Variable auf einen Standardwert gesetzt:0(Klassen und Strukturen werden später behandelt.)
- Lokale Variablen einer Methode müssen im Code explizit initialisiert werden, bevor ihre Werte in Anweisungen verwendet werden können. In diesem Fall erfolgt die Initialisierung nicht bei der Deklaration der Variable, sondern der Compiler prüft alle möglichen Pfade durch die Methode, und wenn er feststellt, dass der Wert einer lokalen Variable vor der Initialisierung verwendet wird, erzeugt er einen Fehler.
Der Ansatz von C# ist das Gegenteil des Ansatzes von C++. In C++ überlässt der Compiler es dem Programmierer, sicherzustellen, dass Variablen vor der Verwendung initialisiert werden, während in Visual Basic alle Variablen automatisch ihre Werte auf ... gesetzt bekommen0。
Analyse von Beispielen zur C#-Variableninitialisierung
Beispielsweise kann in C# die folgende Anweisung nicht verwendet werden:
public static int Main(){ int d; Console.WriteLine(d); // Fehler! Muss vor der Verwendung initialisiert werden }Beachten Sie, dass dieser Code zeigt, wie Main() definiert wird, sodass es Daten vom Typ int statt void zurückgibt.
Beim Kompilieren dieses Codes erhalten Sie die folgende Fehlermeldung:
Use of unassigned local variable 'd'
Betrachten Sie die folgende Anweisung:
Something objSomething;
In C++ erstellt der obige Code eine Instanz der Klasse Something auf dem Stapel. In C# erstellt diese Codezeile nur eine Referenz für ein Something-Objekt, aber diese Referenz zeigt noch auf kein Objekt. Der Aufruf einer Methode oder Eigenschaft für diese Variable verursacht einen Fehler.
Um ein Referenzobjekt in C# zu instanziieren, müssen Sie das Schlüsselwort new verwenden. Wie oben erwähnt, erstellen Sie eine Referenz und verwenden Sie das Schlüsselwort new, um diese Referenz auf ein auf dem Heap gespeichertes Objekt zeigen zu lassen:
objSomething = new Something();
Original-URL: https://www.cnblogs.com/shiguangshuo/p/4842144.html