Heim Backend-Entwicklung C#.Net-Tutorial Ein kurzer Überblick über Werttypen und Referenztypen in C#

Ein kurzer Überblick über Werttypen und Referenztypen in C#

Apr 24, 2017 am 11:30 AM

Konzept:

1. Werttyp: Daten werden im Speicherstapel gespeichert und auf die Daten kann schnell vom Stapel aus zugegriffen werden.

2. Referenztyp: Stellt einen Zeiger oder eine Referenz auf im Speicherheap gespeicherte Daten dar (einschließlich Klassen, Schnittstellen, Arrays und Zeichenfolgen).

Die in C# definierten Werttypen umfassen primitive Typen (Sbyte, Byte, Short, Ushort, Int, Uint, Long, Ulong, Char, Float, Double, Bool, Decimal), Aufzählung (enum), Struktur ( struct)

Referenztypen umfassen: Klassen, Arrays, Schnittstellen, Delegaten, Zeichenfolgen usw.

Unterschied:

Der grundlegende Unterschied besteht darin, wie sie im Speicher gespeichert werden. Werttypen speichern nur Werte im Speicher, und diese Werttypen werden auf dem Stapel gespeichert. Zu diesem Typ gehören primitive Datentypen (wie bool und int). Die Speichereinheit des Referenztyps speichert nur die Adresse des Objekts im Speicherheap, und das Objekt selbst wird im Speicherheap abgelegt. Wenn der Wert des referenzierten Werttyps null ist, bedeutet dies, dass kein Objekt referenziert wird.

Der Unterschied zwischen Heap und Stack:

Heap und Stack sind zwei verschiedene Konzepte und auch ihre Speicherorte im Speicher sind unterschiedlich

Heap wird im Allgemeinen zum Speichern von Variablen verwendet Längendaten wie der String-Typ;

-Stapel werden zum Speichern von Daten fester Länge verwendet, wie z. B. Integer-Typ-Daten (jede int-Variable belegt vier Bytes). Aus dem Speicherort der Daten lässt sich erkennen, dass bei Zuweisung einer Wertvariablen zu einer anderen Wertvariablen zwei identische Werte auf dem Stapel gespeichert werden und bei Zuweisung einer Referenzvariablen zu einer anderen Referenzvariablen zwei identische Werte Es werden zwei Verweise auf denselben Heap-Speicherort im Stapel gespeichert, d. h. die Adresse desselben Heaps wird im Stapel gespeichert. Da bei der Durchführung von Datenoperationen für Werttypen jede Variable ihren eigenen Wert hat, wirken sich Operationen an einer Variablen nicht auf andere Variablen aus. Bei Operationen an den Daten einer Variablen handelt es sich um Operationen an dieser Variablen Wenn zwei Referenztypvariablen auf dasselbe Objekt verweisen, bedeutet dies im Heap, dass die im Stapel gespeicherten Heapadressen identisch sind, sodass sich die Operation an einer Variablen auf die andere auswirkt, die auf dasselbe Objekt verweist.

Konzepte:

1. Werttyp: Daten werden im Speicherstapel gespeichert und auf die Daten kann schnell vom Stapel aus zugegriffen werden.

2. Referenztyp: Stellt einen Zeiger oder eine Referenz auf im Speicherheap gespeicherte Daten dar (einschließlich Klassen, Schnittstellen, Arrays und Zeichenfolgen).

Die in C# definierten Werttypen umfassen primitive Typen (Sbyte, Byte, Short, Ushort, Int, Uint, Long, Ulong, Char, Float, Double, Bool, Decimal), Aufzählung (enum), Struktur ( struct)

Referenztypen umfassen: Klassen, Arrays, Schnittstellen, Delegaten, Zeichenfolgen usw.

Unterschied:

Der grundlegende Unterschied besteht darin, wie sie im Speicher gespeichert werden. Werttypen speichern nur Werte im Speicher, und diese Werttypen werden auf dem Stapel gespeichert. Zu diesem Typ gehören primitive Datentypen (wie bool und int). Die Referenztyp-Speichereinheit speichert nur die Adresse des Objekts im Speicherheap, und das Objekt selbst wird im Speicherheap abgelegt. Wenn der Wert des referenzierten Werttyps null ist, bedeutet dies, dass kein Objekt referenziert wird.

Der Unterschied zwischen Heap und Stack:

Heap und Stack sind zwei verschiedene Konzepte und auch ihre Speicherorte im Speicher sind unterschiedlich

Heap wird im Allgemeinen zum Speichern von Variablen verwendet Längendaten wie der String-Typ;

-Stapel werden zum Speichern von Daten fester Länge verwendet, z. B. Integer-Daten vom Typ int (jede int-Variable belegt vier Bytes). Aus dem Speicherort der Daten lässt sich erkennen, dass beim Zuweisen einer Wertvariablen zu einer anderen Wertvariablen zwei identische Werte auf dem Stapel gespeichert werden, und wenn eine Referenzvariable einer anderen Referenzvariablen zugewiesen wird, werden zwei identische Werte gespeichert Es werden zwei Referenzen auf denselben Heap-Speicherort im Stapel gespeichert, d. h. die Adresse desselben Heaps wird im Stapel gespeichert. Da bei der Durchführung von Datenoperationen für Werttypen jede Variable ihren eigenen Wert hat, wirken sich Operationen an einer Variablen nicht auf andere Variablen aus. Bei Operationen an den Daten einer Variablen handelt es sich um Operationen an dieser Variablen Wenn zwei Referenztypvariablen auf dasselbe Objekt verweisen, bedeutet dies im Heap, dass die im Stapel gespeicherten Heapadressen identisch sind, sodass sich die Operation an einer Variablen auf die andere auswirkt, die auf dasselbe Objekt verweist.

Das obige ist der detaillierte Inhalt vonEin kurzer Überblick über Werttypen und Referenztypen in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Active Directory mit C# Active Directory mit C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

Zufallszahlengenerator in C# Zufallszahlengenerator in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

Zugriffsmodifikatoren in C# Zugriffsmodifikatoren in C# Sep 03, 2024 pm 03:24 PM

Leitfaden zu den Zugriffsmodifikatoren in C#. Wir haben die Einführungstypen von Zugriffsmodifikatoren in C# zusammen mit Beispielen und Ausgaben besprochen.

C#-Datenrasteransicht C#-Datenrasteransicht Sep 03, 2024 pm 03:32 PM

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

C#-Serialisierung C#-Serialisierung Sep 03, 2024 pm 03:30 PM

Leitfaden zur C#-Serialisierung. Hier besprechen wir die Einführung, die Schritte des C#-Serialisierungsobjekts, die Funktionsweise bzw. das Beispiel.

Muster in C# Muster in C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

Primzahlen in C# Primzahlen in C# Sep 03, 2024 pm 03:35 PM

Leitfaden zu Primzahlen in C#. Hier besprechen wir die Einführung und Beispiele von Primzahlen in C# sowie die Codeimplementierung.

Fakultät in C# Fakultät in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zur Fakultät in C#. Hier diskutieren wir die Einführung in die Fakultät in C# zusammen mit verschiedenen Beispielen und Code-Implementierungen.

See all articles