Heim Backend-Entwicklung C#.Net-Tutorial Ist C#-String ein Werttyp oder ein Referenztyp?

Ist C#-String ein Werttyp oder ein Referenztyp?

Mar 04, 2017 am 10:34 AM

Schauen Sie sich zunächst den Code an:

           int a = 1;           
           int b = a;
           a = 2;           
           bool valOrRef = b == 2  ;//false;
Nach dem Login kopieren

Sie können sehen, dass der int-Typ ein Werttyp ist, da sich b nicht mit a< ändert 🎜>.

Sehen Sie sich den folgenden Code noch einmal an:

            string str11 = "qa";            
            string str22 = str11;
            str11 = "qaz";            
            bool valOrRef2 = str22 == "qaz"; //false
Nach dem Login kopieren
Das Ergebnis ist ebenfalls falsch, daher ist string auch ein Werttyp.

Sehen Sie sich den folgenden Code noch einmal an:

            string str1 = "qaz";            
            string str2 = "qaz";            
            bool refequ = object.ReferenceEquals(str1, str2); //true
Nach dem Login kopieren
refequ ist gleich true Wenn string wirklich ein Werttyp ist, wie kann refequ dann true sein, denn schauen Sie sich bitte den folgenden Code an :

            int a = 1;            
            int b = 1;            
            bool refequ2 = object.ReferenceEquals(a, b);//false
Nach dem Login kopieren
Int ist ein Werttyp, das ist sicher, es werden zwei int-Variablen deklariert.

Das ist ein Widerspruch. String sieht aus wie ein Werttyp, aber er sieht auch wie ein Referenztyp aus.

Microsoft:

String ist Referenztyp. Wie lässt sich also erklären, was wie ein Werttyp aussieht?

Bitte beachten Sie zwei Punkte:

1)

String-Objekte. Wenn die Werte gleich sind, sind ihre Referenzadressen gleich. 2)
Zeichenfolgenobjekte. Wenn die Werte nicht gleich sind, sind ihre Referenzadressen nicht gleich.

Analyse des obigen Codes:

            string str11 = "qa";//str11指向了内存addressA,数据为qa;
            string str22 = str11;//str22也指向内存addressA
            str11 = "qaz";//str11新指向了内存addressB,数据为qaz
            bool valOrRef2 = str22 == "qaz"; //false
Nach dem Login kopieren
Zusammenfassung:

Eines der wichtigsten Merkmale von Zeichenfolgen ist, dass sie über Folgendes verfügen Konstante Stabilität : Sobald wir eine Zeichenfolge erstellt und ihr einen kontinuierlichen Speicherplatz auf dem verwalteten Heap zugewiesen haben, können wir die Zeichenfolge in keiner Weise ändern, um sie zu verlängern, zu verkürzen oder zu ändern das Format. Alle von verschiedenen Operationen an dieser Zeichenfolge zurückgegebenen Zeichenfolgen sind tatsächlich eine weitere neu erstellte Zeichenfolge, die selbst keine Änderungen hervorruft.

Postscript:

Wie ist die Saiteneffizienz?

Das String-Objekt wird als

unveränderliches (schreibgeschütztes) Objekt bezeichnet, da sein Wert nach der Erstellung des Objekts nicht mehr geändert werden kann. Manchmal sieht es so aus, als ob die Zeichenfolge geändert wurde. Bei jeder Änderung des Werts wird ein neues Zeichenfolgenobjekt erstellt, während die ursprüngliche Variable weiterhin darauf verweist das ursprüngliche Objekt, sodass es sich nicht ändert. Dies ist auch der Grund, warum String ineffizient ist.

 

Das Obige ist der Inhalt von Ist C#-String ein Werttyp oder ein Referenztyp? Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php. cn)!



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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 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.

C# SortedSet C# SortedSet Sep 03, 2024 pm 03:24 PM

Leitfaden für C# SortedSet. Hier besprechen wir einen kurzen Überblick über C# SortedSet und seine Beispiele sowie seine Code-Implementierung und Ausgabe.

See all articles