Nach der vorherigen Studie können wir grundsätzlich die Konvertierung zwischen Werttyp und Werttyp sowie die Konvertierung zwischen Referenztyp und Referenztyp realisieren, aber wie realisiert man die Konvertierung zwischen Werttyp und Referenztyp (Objekt)? ?
In C# verwenden wir Boxing, um Werttypen in Referenztypen umzuwandeln, und Unboxing, um Referenztypen in Werttypen umzuwandeln. Mit anderen Worten: Es kann die Konvertierung von jedem Werttyp und Referenztyp zum Konvertieren zwischen Objekttypen implementieren Mit Boxing und Unboxing kann jeder Typ als Objekttyp betrachtet werden (für Informationen zum Objekttyp können Sie auf „Referenztyp ---- Objektklasse“ klicken, um sie einzugeben)
Boxing-Konvertierung:
Hier möchte ich hinzufügen, dass Datentypen in .NET in Werttypen und Referenztypen (nicht äquivalent zu C++-Zeigern) unterteilt sind. Dementsprechend ist die Speicherzuweisung in zwei Arten unterteilt: eine ist Stapel und die andere ist Heap, (verwalteter Heap). Werttypen werden nur auf dem Stapel zugewiesen. Referenztypen weisen Speicher mit dem verwalteten Heap zu.
Schreiben Sie ein Beispiel:
int i = 123; object o = i; //实现装箱操作,其实也是隐式转换。
Das schematische Diagramm der Boxkonvertierung lautet wie folgt:
Boxing Bei der Konvertierung handelt es sich im Wesentlichen um eine Kopiertypkonvertierung. Das bedeutet, dass sich nach Abschluss des Boxings die Änderung des Werts von i und des Werts von o nicht ändert.
Unboxing-Konvertierung:
der Boxwert des Werttyps und kopiert dann den Wert dieser Instanz in die Variable des Werttyps;
Schreiben Sie ein Beispiel (basierend auf dem Boxcode oben):
int n_int = (int)o; //强制将object类型转换为int 类型
Es ist ersichtlich, dass es sich um den umgekehrten Prozess des Boxens handelt, der die Konvertierung des Objekts in den ursprünglichen Typ erzwingt. Es muss beachtet werden, dass der Unboxing-Wert den haben muss denselben Typ haben wie die Zielvariable, in die sie konvertiert werden soll.
Was ich hier betonen muss, ist, dass Boxing und Unboxing Konvertierungen von Werttypen oder Referenztypen in Objekttypen und Konvertierungen von Objekttypen in Werttypen oder Referenztypen sind.
Das Obige ist Der Inhalt von C# Learning Diary 18 ---- Boxing-Konvertierung und Unboxing-Konvertierung Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com).