StringBuilder.ToString()的复杂性是什么 [英] What is the Complexity of StringBuilder.ToString()
问题描述
在C#中,StringBuilder.ToString()
的复杂性是什么?是O(1),O(N)还是其他?
in C#, What is the Complexity of StringBuilder.ToString()
? Is it O(1), O(N), or something else?
推荐答案
它在框架版本之间有所不同.在较早的版本中,StringBuilder
直接在string
上运行,因此在.ToString()
中没有额外的花费:它只是直接将数据交给您(这可能意味着数据过大,但可以使它工作);所以是O(1).
It varies between framework version; in older versions StringBuilder
works on a string
directly, so there is no additional cost in .ToString()
: it just hands you the data directly (which can mean oversized, but it makes it work); so O(1).
在较新的框架版本中,它使用char[]
后备缓冲区,因此,当您.ToString()
时,它可能需要复制2 x Length
字节,使其为O(N).
In newer framework version, it uses a char[]
backing buffer, so now when you .ToString()
it will probably need to copy 2 x Length
bytes, making it O(N).
这篇关于StringBuilder.ToString()的复杂性是什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!