gpt4 book ai didi

c# - 为什么字符串引用本身的位置会发生变化?

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:18 25 4
gpt4 key购买 nike

string[] names = {"avinash","harish", "savan", "shyam" };
foreach (var name in names)
namesAll += name;

我们知道字符串在 .NET 中是不可变的。每次我们将新字符串连接到现有字符串时,都会保留一个新的内存位置,其中包含新的连接字符串……由字符串引用指向。这对我来说似乎很好。

令我困惑的是,为什么字符串引用 (namesAll) 的位置也应该改变?对我来说,这似乎完全没有必要。您可以在 Visual Studio 中使用“内存”窗口查看字符串引用 (namesAll) 的位置来确定这一点。

这是每次迭代后 namesAll 的地址: 0x01ef9594 0x01ef961c 0x01ef9644 请注意,这不是连接字符串的地址(显然会发生变化),而是字符串引用 namesAll 的地址。

最佳答案

特定字符串将获得一个引用,该引用可在使用该字符串的任何地方重复使用。更改引用的值也会更改所有这些其他位置,这几乎不是您想要的...

随着在每次迭代中创建一个新字符串,一个新字符串获得一个新的内存位置 - 这是由变量引用的,因此是新地址。

关于c# - 为什么字符串引用本身的位置会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6753263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com