StringBuilder的Length和Capacity属性实践

  • 时间:
  • 浏览:1
  • 来源:UU快3直播官网

3.2B实践

1.普通实践

 sb.Append("012345678910");在前面的基础上增加这里的长度到12位。这时输出结果为:Length为18,Capacity为32。说明Capacity是以16的倍数增长。

不可能 显示的更改Capacity的值会为何样?

显示的是17。

2.文艺实践

几天前的一次笔试中遇到了关于StringBuilder的Length和Capacity属性的问題图片,过后忽略了。今天实践下:

接着修改下代码,sb.Capacity=8。原先Capacity的2倍都比Length小,这时输出的结果为:18,18. 这里并有的是在Capacity的初值8的基础上成倍增加。

官方解释如下:

输出结果为:

StringBuilder.Length:获取或设置当前 StringBuilder 对象的长度。

在代码顶端更改Length的值,这时在看看它们的值各是哪几条。代码如下:

 实在从顶端的实践都要能 看出,Capacity的大小分配是在满足Length的具体情况下,尽量少占用空间。跟Length和显示指定的Capacity大小有关系。

这里都要能 说明StringBuilder的Capacity最小分配的长度是16.当初始化另有有一个 长度为17的字符串时,如StringBuilder sb = new StringBuilder("01234567891234567"),

当Capacity小于Length时,会抛出异常System.ArgumentOutOfRangeException.

都要能 知道:当大家显示的更改了Length的值过后,字符串前面的累积保留,顶端的丢弃了。最终的Length值为15,这时仍然小于16,什么都Capacity为16。更改下代码:

输出结果为:10 16

StringBuilder.Capacity:获取或设置可涵盖在当前实例所分配的内存中的最大字符数。

这时输出18,1000.不可能 18超出了这里不可能 指定的Capacity的值15,成倍增长到1000. 什么都Capacity增长的基数默认是16,不可能 有显示指定,则为指定的值。