Абстрактный поток Stream в C#
Stream задаёт общий контракт чтения, записи и позиции для файлов, памяти и сетевых источников.
Свойства вроде CanRead и CanWrite подсказывают, поддерживает ли конкретная реализация нужную операцию до вызова методов.
Перед чтением или записью у потока спрашивают, открыто ли это направление.
У пустого MemoryStream свойства CanRead и CanWrite равны true:
using System.IO;
using MemoryStream stream = new();
Console.WriteLine(stream.CanRead); // выведет True
Console.WriteLine(stream.CanWrite); // выведет True
Откройте поток поверх массива байт длиной 3 и выведите 1, если чтение и запись разрешены одновременно.