gpt4 book ai didi

c# - Microsoft C# 字符串文档 : Am I misinterpreting what I read, 还是文档有误?

转载 作者:太空狗 更新时间:2023-10-30 00:30:51 26 4
gpt4 key购买 nike

作为 C# 的新手,我正在阅读一些指南。关于字符串,here我阅读(突出显示是我的):

Strings are immutable--the contents of a string object cannot be changed after the object is created, although the syntax makes it appear as if you can do this. For example, when you write this code, the compiler actually creates a new string object to hold the new sequence of characters, and the variable b continues to hold "h".

string b = "h";
b += "ello";

但是尝试下面的代码,它会打印“hello”。

string b = "h";
b += "ello";
System.Diagnostics.Debug.WriteLine(b);

那么,是我误解了我读到的内容,还是文档有误?还有其他选择吗? :)

最佳答案

很明显,文档是错误的,因为您已经发现后一个版本已得到更正,尽管它也有一些问题(见下文)。但我认为一个更好的例子是

string b = "h";
string d = b;
d += "ello";

现在 b 仍然是 "h"因为 += 没有更新引用,而是创建了一个新的 string d 引用。

还需要注意的是,这段代码中有3个strings。首先是 string 文字“h”,然后是 string 文字“ello”,最后是 string “hello”,它是由前两个。因为所有 string 字面量都是驻留的,并且驻留的字符串不会被垃圾回收,所以最终有资格进行垃圾回收的 3 个 string 是当前引用的“hello”通过 d。虽然可以关闭 string 实习,但在这种情况下,所有这三个最终都有资格进行垃圾收集。

关于c# - Microsoft C# 字符串文档 : Am I misinterpreting what I read, 还是文档有误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32399013/

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