Свойство MemoryStream.Capacity
Свойство Capacity у растущего
MemoryStream можно увеличить.
Значение меньше Length бросает
исключение. Данные занимают только
первые Length байт - см.
ToArray.
Синтаксис
int cap = memoryStream.Capacity;
memoryStream.Capacity = 8;
Пример
Давайте поднимем Capacity
после записи трёх байт:
using System;
using System.IO;
class Program
{
static void Main()
{
using (MemoryStream stream = new MemoryStream())
{
stream.Write(new byte[] { 97, 98, 99 }, 0, 3);
stream.Capacity = 8;
bool res = stream.Length == 3 && stream.Capacity >= 8;
Console.WriteLine(res);
}
}
}
Результат выполнения кода:
True
Пример
Давайте попробуем задать Capacity
меньше длины:
using System;
using System.IO;
class Program
{
static void Main()
{
using (MemoryStream stream = new MemoryStream())
{
stream.Write(new byte[] { 97, 98, 99 }, 0, 3);
try
{
stream.Capacity = 2;
}
catch (ArgumentOutOfRangeException)
{
Console.WriteLine("fail");
}
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте убедимся, что ToArray
не растягивается до Capacity:
using System;
using System.IO;
class Program
{
static void Main()
{
using (MemoryStream stream = new MemoryStream())
{
stream.Write(new byte[] { 97, 98, 99 }, 0, 3);
stream.Capacity = 8;
bool res = stream.ToArray().Length == 3;
Console.WriteLine(res);
}
}
}
Результат выполнения кода:
True
Смотрите также
-
GetBuffer,
массив ёмкости -
MemoryStream,
растущий поток -
ToArray,
длина копии без запаса -
Write,
запись в буфер