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

Метод MemoryStream.TryGetBuffer

Метод TryGetBuffer возвращает false, если буфер скрыт, и true с заполненным ArraySegment<byte>, когда массив доступен. При false GetBuffer не вызывают.

Синтаксис

bool ok = memoryStream.TryGetBuffer(out ArraySegment<byte> segment);

Пример

Давайте проверим поток на готовом массиве:

using System; using System.IO; class Program { static void Main() { using (MemoryStream stream = new MemoryStream(new byte[] { 97, 98, 99 })) { bool res = stream.TryGetBuffer(out _); Console.WriteLine(res); } } }

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

False

Пример

Давайте запишем байты в пустой поток и запросим буфер:

using System; using System.IO; class Program { static void Main() { using (MemoryStream stream = new MemoryStream()) { stream.Write(new byte[] { 97, 98, 99 }, 0, 3); bool res = stream.TryGetBuffer(out ArraySegment<byte> seg); Console.WriteLine(res && seg.Count >= 3); } } }

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

True

Пример

Давайте прочитаем первый байт из сегмента без GetBuffer:

using System; using System.IO; class Program { static void Main() { using (MemoryStream stream = new MemoryStream()) { stream.Write(new byte[] { 97, 98, 99 }, 0, 3); if (stream.TryGetBuffer(out ArraySegment<byte> seg)) { Console.WriteLine(seg.Array[seg.Offset]); } } } }

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

97

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

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