Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
791 of 1492 menu
◀ ▶

Метод MemoryStream.ToArray

Метод ToArray возвращает новый byte[] длиной Length, а не Capacity. Лишний запас буфера в копию не попадает. Внутренний массив без копии даёт GetBuffer, если доступ разрешён.

Синтаксис

byte[] copy = memoryStream.ToArray();

Пример

Давайте получим строку после записи трёх байт:

using System; using System.IO; using System.Text; class Program { static void Main() { using (MemoryStream stream = new MemoryStream()) { stream.Write(new byte[] { 97, 98, 99 }, 0, 3); string res = Encoding.UTF8.GetString(stream.ToArray()); Console.WriteLine(res); } } }

Результат выполнения кода:

"abc"

Пример

Давайте выведем байты числами:

using System; using System.IO; class Program { static void Main() { using (MemoryStream stream = new MemoryStream()) { stream.Write(new byte[] { 97, 98, 99 }, 0, 3); byte[] copy = stream.ToArray(); string res = copy[0] + " " + copy[1] + " " + copy[2]; Console.WriteLine(res); } } }

Результат выполнения кода:

97 98 99

Пример

Давайте сравним длину копии с 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 = 16; byte[] copy = stream.ToArray(); bool res = copy.Length == 3 && stream.Capacity >= 3; Console.WriteLine(res); } } }

Результат выполнения кода:

True

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить