Je sais que les chaînes sont inmutables, une fois créées nous ne pouvons pas les changer, j'ai lu que si nous créons un nouvel objet chaîne et lui assignons une valeur, nous assignons une autre valeur au même objet chaîne en interne objet créé et affecté avec la nouvelle valeur. Disons que j'ai:Comment fonctionne la chaîne dans C#?
string str = "dog";
str = "cat";
Si j'écris Console.WriteLine(str);
retourne cat
. Donc, intérieurement, il y a deux objets? Mais ils ont le même nom? Comment ça fonctionne? J'ai fait quelques recherches sur google mais je n'ai pas encore trouvé quelque chose de suffisamment convaincant pour que je puisse clarifier mes pensées à ce sujet. Je sais que les chaînes sont des types de référence, donc nous avons un objet dans la pile avec une référence à une valeur dans le tas, que se passe-t-il dans ce cas? (Voir le code ci-dessus).
J'ai téléchargé une photo, excusez-moi si je me trompe sur l'idée de la pile et le tas c'est pourquoi je pose cette question. L'image reflète-t-elle ce qui se passe dans la première ligne de code (string str = "dog";
)? Et alors que devrait-il se passer dans la deuxième ligne du code ?? La valeur dog
dans les changements de tas? Et puis un nouvel objet dans la pile est créé en le référençant? Alors qu'arrive-t-il avec l'objet qui était là avant? Ont-ils le même nom? Je suis désolé pour autant de questions mais je pense qu'il est très important de comprendre cela correctement et de savoir ce qui se passe dans les coulisses ...
très difficile pour moi de choisir une réponse parce que toutes vos réponses ont été très descriptives, je suis clarifié maintenant à ce sujet, merci !!! – AlexGH