She*_*ell 8 .net c# stringbuilder
有一个构造函数中的StringBuilder类(INT32,INT32).您会看到有两个参数capacity和maxCapacity.
我试图在StringBuilder构造函数中搜索capacity和maxCapacity之间的差异.但是,我没有得到任何理解构造函数的东西.我在msdn上找到了文档.不过,我不明白为什么需要它以及这些参数的用途是什么.我仍然想到一些问题,我应该在哪里使用这个构造函数?它是否有助于提高我的应用程序的性能?
来自 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参数与内存分配无关。