Maison développement back-end Tutoriel C#.Net La chaîne C# est-elle un type valeur ou un type référence ?

La chaîne C# est-elle un type valeur ou un type référence ?

Mar 04, 2017 am 10:34 AM

Regardez d'abord le code :

           int a = 1;           
           int b = a;
           a = 2;           
           bool valOrRef = b == 2  ;//false;
Copier après la connexion

Vous pouvez voir que le type int est un type valeur, car b ne change pas avec a.

Regardez à nouveau le code suivant :

            string str11 = "qa";            
            string str22 = str11;
            str11 = "qaz";            
            bool valOrRef2 = str22 == "qaz"; //false
Copier après la connexion

Le résultat est également faux, donc la chaîne est également un type valeur.

Regardez à nouveau le code suivant :

            string str1 = "qaz";            
            string str2 = "qaz";            
            bool refequ = object.ReferenceEquals(str1, str2); //true
Copier après la connexion

refequ est égal à true Si la chaîne est vraiment un type valeur, alors comment refequ peut-il être vrai, car veuillez regarder le code suivant. :

            int a = 1;            
            int b = 1;            
            bool refequ2 = object.ReferenceEquals(a, b);//false
Copier après la connexion

Int est un type valeur, c'est certain, deux variables int sont déclarées.

C'est une contradiction. Comment l'expliquer ? La chaîne ressemble à un type valeur, mais elle ressemble aussi à un type référence.

Microsoft : la chaîne est de type référence. Alors, comment expliquer à quoi ressemble le type valeur ?

N'oubliez pas 2 points :

1) objets chaîne, si les valeurs sont les mêmes, leurs adresses de référence sont les mêmes.
2) objets chaîne, si les valeurs ne sont pas égales, leurs adresses de référence ne sont pas égales.

Analyse du code ci-dessus :

            string str11 = "qa";//str11指向了内存addressA,数据为qa;
            string str22 = str11;//str22也指向内存addressA
            str11 = "qaz";//str11新指向了内存addressB,数据为qaz
            bool valOrRef2 = str22 == "qaz"; //false
Copier après la connexion

Résumé :

L'une des caractéristiques les plus importantes de la chaîne est qu'elle a stabilité constante. Variabilité  : Une fois que nous avons créé une chaîne et lui avons alloué un espace mémoire continu sur le tas géré, nous ne pourrons en aucun cas modifier la chaîne pour la rendre plus longue, plus courte ou la changer. le format. Toutes les chaînes renvoyées par diverses opérations sur cette chaîne sont en réalité une autre chaîne recréée, qui elle-même ne produira aucun changement.

Post-scriptum :
Quelle est l'efficacité de la chaîne ?

L'objet chaîne est appelé un objet immuable (lecture seule) car une fois l'objet créé, sa valeur ne peut plus être modifiée. Parfois, il semble qu'elle ait été modifiée. En fait, la chaîne a été spécialement traitée. Chaque fois que la valeur est modifiée, un nouvel objet chaîne sera créé. La variable pointera vers ce nouvel objet, tandis que celle d'origine pointe toujours vers ce nouvel objet. l'objet d'origine, donc il ne changera pas. C'est aussi la raison pour laquelle la chaîne est inefficace.

 

Ce qui précède est le contenu de La chaîne C# est-elle un type valeur ou un type référence ? Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php. cn) !


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

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

Guide d'Active Directory avec C#. Nous discutons ici de l'introduction et du fonctionnement d'Active Directory en C# ainsi que de la syntaxe et de l'exemple.

Générateur de nombres aléatoires en C# Générateur de nombres aléatoires en C# Sep 03, 2024 pm 03:34 PM

Guide du générateur de nombres aléatoires en C#. Nous discutons ici du fonctionnement du générateur de nombres aléatoires, du concept de nombres pseudo-aléatoires et sécurisés.

Modificateurs d'accès en C# Modificateurs d'accès en C# Sep 03, 2024 pm 03:24 PM

Guide des modificateurs d'accès en C#. Nous avons discuté de l'introduction Types de modificateurs d'accès en C# ainsi que d'exemples et de résultats.

Sérialisation C# Sérialisation C# Sep 03, 2024 pm 03:30 PM

Guide de sérialisation C#. Nous discutons ici de l'introduction, des étapes de l'objet de sérialisation C#, du fonctionnement et de l'exemple respectivement.

Vue Grille de données C# Vue Grille de données C# Sep 03, 2024 pm 03:32 PM

Guide de la vue Grille de données C#. Nous discutons ici des exemples de la façon dont une vue de grille de données peut être chargée et exportée à partir de la base de données SQL ou d'un fichier Excel.

Modèles en C# Modèles en C# Sep 03, 2024 pm 03:33 PM

Guide des modèles en C#. Nous discutons ici de l'introduction et des 3 principaux types de modèles en C# ainsi que de ses exemples et de l'implémentation du code.

Nombres premiers en C# Nombres premiers en C# Sep 03, 2024 pm 03:35 PM

Guide des nombres premiers en C#. Nous discutons ici de l'introduction et des exemples de nombres premiers en c# ainsi que de l'implémentation du code.

Factorielle en C# Factorielle en C# Sep 03, 2024 pm 03:34 PM

Guide de Factorial en C#. Nous discutons ici de l'introduction de factorial en c# ainsi que de différents exemples et de l'implémentation du code.

See all articles