StringBuilder构造函数中capacity和maxCapacity的区别是什么?

She*_*ell 8 .net c# stringbuilder

有一个构造函数的StringBuilder类(INT32,INT32).您会看到有两个参数capacitymaxCapacity.

我试图在StringBuilder构造函数中搜索capacity和maxCapacity之间的差异.但是,我没有得到任何理解构造函数的东西.我在msdn上找到了文档.不过,我不明白为什么需要它以及这些参数的用途是什么.我仍然想到一些问题,我应该在哪里使用这个构造函数?它是否有助于提高我的应用程序的性能?

Sud*_*udi 4

来自 MSDN:StringBuilder(int,int)

初始化 StringBuilder 类的新实例,该实例以指定的容量开始,并且可以增长到指定的最大值。

因此,Capcity是它必须启动/创建的大小,MaxCapacity也是Stringbuilder.

示例 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  
Run Code Online (Sandbox Code Playgroud)

示例 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   
Run Code Online (Sandbox Code Playgroud)

编辑:

是的MaxCapacity,很少使用。

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

一旦用户添加项目,并且如果大小超过其容量限制,那么它会分配更多内存来容纳超出的字符,并且它会不断增长,直到除非内存没有问题。

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


从下面的通讯网络:正如@Sriram所说,MaxCapacity参数与内存分配无关。

  • @SriramSakthivel 这就是我想知道的。 (2认同)