当我将一些流写入新的内存流中时,首先将内存流的长度和容量设置为0,并随写入过程而生长。但是在某个时候,容量的增长速度比长度的增长快。
写操作完成后,我得到正确的长度(与原始输入流相同),但容量更大。
它正确吗?
他们不应该一样吗?
我找不到有关它的任何信息
他们不应该一样吗?
否 - 或至少不一定。这基本上与List<T>
的容量与其计数相同(或StringBuilder
)。这个想法是,为了最大程度地减少您制作副本的次数,当您需要增加容量时,您会大大增加它 - 不仅是一个字节。因此,例如,一种策略将是"至少16个字节,并且在需要时将容量增加一倍。"
完成了一些写操作后,流如何知道您完成了?您是否真的希望它必须复制整个内容才能执行另一个字节的写入?
基本上的权衡是内存与速度:使能力越大,您可以在副本之间快速进行写作。