Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die Sonderfallzeichenfolge von Referenztypen in C#

Detaillierte Einführung in die Sonderfallzeichenfolge von Referenztypen in C#

黄舟
黄舟Original
2017-09-18 11:02:201686Durchsuche

Der String-Typ wird häufig beim Programmieren in C# verwendet, aber er wird nicht überall als Referenz verwendet. Ich werde sie einzeln auflisten:

1) Direkte Zuweisung von Zeichenfolgen : Die Zeichenfolge selbst ist ein Referenztyp, und Sie sollten die neue Objektmethode als Instanz verwenden. Der Einfachheit halber kann Microsoft sie jedoch direkt definieren String-Variablen und Zuweisen von Werten, zum Beispiel: string a = „My Chinese Heart“; Typ Die beiden Referenzvariablen zeigen auf dieselbe Adresse, aber wenn eine Zeichenfolgenvariable einer anderen Zeichenfolgenvariablen zugewiesen wird, werden zwei verschiedene Adressräume erstellt, zum Beispiel:

Der obige Code Es handelt sich um zwei verschiedene Adressverweise. Sie weisen lediglich den String-Inhalt von a und b zu Wenn man einer String-Variablen einen Wert zuweist, ändert sich nur ihr Inhalt, nicht aber ihre Adresse. Wenn derselben String-Variablen erneut ein Wert zugewiesen wird, wird der Speicherplatz neu zugewiesen und eine neue Adresse erstellt , und weisen Sie dann der ursprünglichen Zeichenfolgenvariablen die Adresse

zu. Beispiel:
 string a = "12345"; string b = a;

Wenn a zum zweiten Mal der Wert „456“ zugewiesen wird, wird ein neuer Speicher erstellt Platz und weisen Sie dann die neu erstellte Speicheradresse der Variablen a zu. Der vorherige „123“-Speicher wird verworfen und wartet auf die Garbage Collection.

4) Übergabe einer Zeichenfolge als Funktionsparameter:

Wenn eine Zeichenfolge als Parameter einer Funktion übergeben wird, handelt es sich um einen Referenztyp. Die Adressreferenz der Variablen sollte übergeben werden. und später in der Funktion wird eine Änderung dieses Parameters den Wert der Zeichenfolge ändern, aber ich sage Ihnen, es wird nur eine Kopie der Zeichenfolge an den Funktionskörper

übergeben. Eine Änderung des Zeichens in der Funktion tut dies nicht Der Wert des Parameters kann natürlich auch als Referenztyp verwendet werden. Er kann hauptsächlich für den Screenshot verwendet werden:
  string a= "123";  a = "456"

5) Vergleich des String-Vergleichs:

Wenn Strings als Referenzen verwendet werden, werden die beiden Referenztypen auf Gleichheit verglichen, nur die Adressen der beiden Referenzen werden auf Gleichheit verglichen (es sei denn Sie überladen die Equal-Funktion), aber wenn wir Zeichenfolgen vergleichen, stellen wir fest, dass sie tatsächlich den Inhalt der Zeichenfolge vergleichen, nicht die Adresse der Referenz.

Dies ist ein Verweis auf die Zeichenfolgenklasse überlädt die equal-Funktion, die sich auf den Vergleich des Inhalts der Zeichen bezieht. An diesem Punkt sind die Ergebnisse von == und equal tatsächlich gleich; >Wenn wir Variablen mit demselben String-Inhalt erstellen, verweisen diese String-Variablen tatsächlich auf dieselbe Speicheradresse. Dies ist ein bisschen wie Inlining in C++.

Wenn es weitere Besonderheiten gibt, geben Sie bitte Ratschläge von Experten . Wenn Sie unterschiedliche Meinungen haben, hinterlassen Sie bitte eine Nachricht. Jeder kann voneinander lernen, damit Anfänger Schritt für Schritt erwachsen werden können. ! !

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Sonderfallzeichenfolge von Referenztypen in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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