Maison >développement back-end >Tutoriel C#.Net >.NET Framework - Explication détaillée indiquant si la chaîne est un type valeur ou référence
Regardez d'abord le code :
int a = 1; int b = a; a = 2; bool valOrRef = b == 2 ;//false;
Vous pouvez voir que le type int est un type valeur, car b ne change pas après a.
Regardez à nouveau le code suivant :
string str11 = "qa"; string str22 = str11; str11 = "qaz"; bool valOrRef2 = str22 == "qaz"; //false
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
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
int est un type valeur, c'est certain, deux intvariables 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) string objet , si les valeurs sont les mêmes, leurs référence adresses sont le même.
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
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 détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!