Мой метод получает параметр MemoryStream в качестве параметра. Как узнать, расширяется ли эта MemoryStream?Как определить, установлен ли размер памяти MemoryStream?
MemoryStream может быть создан с использованием массива с использованием «нового MemoryStream (byte [] buf)». Это означает, что поток будет иметь фиксированный размер. Вы не можете добавлять к нему данные. С другой стороны, поток может быть создан без параметров с помощью «new MemoryStream()». В этом случае вы можете добавить к нему данные.
Вопрос: Как я могу знать - могу ли я безопасно добавлять данные в текущий поток или я должен создать новый расширяемый поток и скопировать данные на него?
Вы пробовали свойство CanWrite? Различия между этими случаями? – chris
Без лишнего контекста я бы сказал, что вы не должны пытаться. Если вызывающий абонент передает поток, который не может принимать данные, они не должны вызывать операции, которые могут привести к записи данных. То есть, возможно, вы можете улучшить интерфейс класса, чтобы это не проблема. – bmm6o
Он всегда МОЖЕТ принимать данные. Вы можете написать что-нибудь в поток, но доступный буфер - FIXED. Вы не можете ни писать за пределами буфера, ни расширять его емкость –