.NET 4.x Размер массива для MemoryStream и NotSupportedException - C#

Узнай цену своей работы

Формулировка задачи:

Почему если изменить размер массива с 254 на любой другой, выкидывает NotSupportedException в строке write.Flush(); почему размер массива влияет на это? Объясните пожалуйста.
static void Main()
        {
            byte[] storage = new byte[254];
 
            MemoryStream memstr = new MemoryStream(storage);
 
            StreamWriter write = new StreamWriter(memstr);
            StreamReader reade = new StreamReader(memstr);
 
            try
            {
                for(int i = 0; i < 10; i++)
                {
                    write.WriteLine("byte [" + i + "]: " + i);
                }
                write.WriteLine(".");
                write.Flush();
 
                Console.WriteLine("Вывод непосредственно с массива");
                foreach (char ch in storage)
                {
                    if (ch == '.') break;
                    Console.Write(ch);
                }
                Console.WriteLine("Вывод с использованием ридера");
                memstr.Seek(0, SeekOrigin.Begin);
                string str = reade.ReadLine();
                while(str != null)
                {
                    str = reade.ReadLine();
                    if (str[0] == '.') break;
                    Console.WriteLine(str);
                }
            }catch(IOException exc)
            {
                Console.WriteLine("Ошибка ввода-вывода" + exc.Message);
            }
            finally
            {
                reade.Close();
                write.Close();
            }
            Console.Read();

Решение задачи: «.NET 4.x Размер массива для MemoryStream и NotSupportedException»

textual
Листинг программы
static void Main()
{
    MemoryStream memstr = new MemoryStream();
    StreamWriter write = new StreamWriter(memstr);
    StreamReader reade = new StreamReader(memstr);
 
    try
    {
        for(int i = 0; i < 10; i++)
        {
            write.WriteLine("byte [" + i + "]: " + i);
        }
        write.WriteLine(".");
        write.Flush();
 
        byte[] storage = memstr.ToArray();
 
        Console.WriteLine("Вывод непосредственно с массива");
        // Далее без изменений ...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы