.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("Вывод непосредственно с массива");
- // Далее без изменений ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д