Heim  >  Artikel  >  Backend-Entwicklung  >  C#-Lerntagebuch 18 ----Boxing-Konvertierung und Unboxing-Konvertierung

C#-Lerntagebuch 18 ----Boxing-Konvertierung und Unboxing-Konvertierung

黄舟
黄舟Original
2017-01-21 15:08:551458Durchsuche

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:

C#-Lerntagebuch 18 ----Boxing-Konvertierung und Unboxing-Konvertierung

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 类型

C#-Lerntagebuch 18 ----Boxing-Konvertierung und Unboxing-Konvertierung

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 (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn