gpt4 book ai didi

c# - StringBuilder 构造函数中的 capacity 和 maxCapacity 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 18:22:12 24 4
gpt4 key购买 nike

StringBuilder类(int32, int32)中有一个构造函数。您会看到分别有两个参数 capacityma​​xCapacity

我试图在 StringBuilder 构造函数中搜索 capacity 和 maxCapacity 之间的区别。但是,我对那个构造函数一无所知。我在 msdn 上找到了文档.不过,我不明白为什么需要它以及这些参数的用途是什么。一些问题仍然在我脑海中,我应该在哪里使用这个构造函数?它有助于提高我的应用程序的性能吗?

最佳答案

来自 MSDN:StringBuilder(int,int)

Initializes a new instance of the StringBuilder class that starts with a specified capacity and can grow to a specified maximum.

所以 Capcity 是它必须启动/创建的大小,MaxCapacityStringbuilder 的限制。

示例1:逐一尝试下面的示例

StringBuilder str = new StringBuilder(3, 5);
str.Append("1"); //no error as Length 1 <= max limit 5
str.Append("12"); //no error as Length 2 <= max limit 5
str.Append("123"); //no error as Length 3 <= max limit 5
str.Append("1234"); //no error as Length 4 <= max limit 5
str.Append("12345"); //no error as Length 5 <= max limit 5
str.Append("123456"); //error as Length 6 is not <= max limit 5

示例 2:一次尝试以下示例

StringBuilder str = new StringBuilder(3, 5);
str.Append("1"); //no error as str Length 1 <= max limit 5
str.Append("12"); //no error as str Length 3 <= max limit 5
str.Append("123"); //error as str Length 6 is not <= max limit 5

编辑:

是的MaxCapacity很少使用。

StringBuilder(int Capacity) :它使用 Capacity 参数在内存中创建 StringBuilder 对象。

只要用户添加项目,如果大小超过其容量限制,它就会分配更多内存来容纳超出的字符,并且它会一直增长直到内存没有问题为止。

StringBuilder(int Capacity,int maxCapacity):它与上面的一个参数 Constructor 相同,但在创建/增加其运行时内存以容纳超出的字符之前,它会检查 MAXCAPACITY limit ,如果超过 MAXCAPACITY 限制则抛出 Exception


来自以下commnets:正如@Sriram 所说,MaxCapacity 参数与内存分配无关。

关于c# - StringBuilder 构造函数中的 capacity 和 maxCapacity 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22110944/

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