gpt4 book ai didi

c# - String 和 StringBuilder 的性能注意事项 - C#

转载 作者:行者123 更新时间:2023-12-03 03:10:37 24 4
gpt4 key购买 nike

全部,

对于字符串 string s = "abcd"string w = s.SubString(2) 是否返回一个新分配的 String 对象,即 string w = new String ("cd") 内部还是字符串文字?

对于 StringBuilder,当附加字符串值时,如果需要增加 StringBuilder 的大小,是否将所有内容复制到新的内存位置,或者只是将指向每个较早 String 值的指针重新分配到新位置?

最佳答案

String 是不可变的,因此任何“更改”字符串的操作实际上都会返回一个新字符串。这包括 SubStringString 上的所有其他操作,包括那些不更改长度的操作(例如 ToLower() 或类似操作)。

StringBuilder 内部包含字符 block 的链接列表。当需要增长时,会分配一个新 block 并将其插入到列表末尾,并将数据复制到此处。换句话说,在追加时不会复制整个 StringBuilder 缓冲区,只会复制要追加的数据。我根据 Framework 4 引用源仔细检查了这一点。

关于c# - String 和 StringBuilder 的性能注意事项 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068407/

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