Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2016, 19:15   #1
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию Stream. Что это такое вообще?

Читаю книгу по WPFю Встретился весьма не понятный, на первый взгляд пример.
Код:
Window window = null; 
using (FileStream fs = 
    new FileStream("MyWindow.xaml", FileMode.Open, FileAccess.Read)) 
{ 
    // Получить корневой элемент. Мы знаем, что это Window 
    window = (Window)XamlReader.Load(fs); 
} 
// Найти кнопку OK, перебирая дочерние элементы (мы 
// пользуемся априорными знаниями о структуре документа!)  
StackPanel panel = (StackPanel)window.Content; 
Button okButton = (Button)panel.Children[4];
Как пишет автор, касательно приведённого кода, имея ссылку на кнопку Button, можно делать с ней всё, что угодно: задавать дополнительные свойства, присоединять обработчики событий или выполнять какие-то действия, которые нельзя реализовать на XAML, например, вызывать методы кнопки.
Написать то всё понятно, но код не понятен.
Подел на на МСДН, где написано, что FileStream предоставляет Stream для файла с поддержкой синхронных и асинхронных операций чтения и записи.
Я вообще не понял что тут написано и для чего оно нужно. Как это понять вообще?
Далее я попал сюда, где сказано, что мол Stream предоставляет универсальное представление последовательности байтов. Этот класс является абстрактным. Зачем это универсальное представление последовательности байтов нужно?
hoz вне форума Ответить с цитированием
Старый 27.03.2016, 19:20   #2
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

Цитата:
Зачем это универсальное представление последовательности байтов нужно?
А как иначе можно работать с байтами, не имея их представления? Объяснять, зачем нужно работать с файлами, надо?
vlad1389 вне форума Ответить с цитированием
Старый 27.03.2016, 19:21   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это не относится к WPF, это основы .NET/C# (ну и вообще во многих ЯП есть подобное).

Цитата:
Зачем это универсальное представление последовательности байтов нужно?
Ну а для чего вообще нужны базовые/абстрактные классы или интерфейсы?

Подсказка: как видно из второй ссылки кроме FileStream есть например MemoryStream, NetworkStream и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.03.2016, 19:53   #4
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Alex11223, зачем нужны абстрактные классы и интерфейсы я прекрасно понимаю. Но, тем не менее, почему тогда не работать с кнопкой или других объектом по имени? Ведь можно задать атрибут Name. На кой использовать поток?
Я понимаю, если бы мы работали с документами, но тут же объекты компановки...
hoz вне форума Ответить с цитированием
Старый 27.03.2016, 20:05   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут кнопка вообще если речь о Stream'ах, это никак не связано с кнопкой.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.03.2016, 20:10   #6
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Причем тут кнопка вообще если речь о Stream'ах, это никак не связано с кнопкой.
Вот я и спрашиваю, какой резон было тут класс FileStream использовать. Вот фрагмент книги Адама Натана. WPF4. Подробное руководство:





Для чего тогда он использует здесь класс FileStream ?
hoz вне форума Ответить с цитированием
Старый 27.03.2016, 20:13   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Потому что XamlReader'у не важно откуда байты, хоть из файла, хоть из памяти, хоть из сетевого сокета, Load принимает любой Stream.

Ну а в данном случае надо было грузить данные из файла, вот и взяли FileStream.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.03.2016, 19:14   #8
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

В общем-то, теперь с большего всё понятно. Не от туда я начал читать код. Точнее не дочитав до конца сделал какие-то выводы.
hoz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
<< >> & ^ | с чем это едят и что это такое? pufystyj Общие вопросы C/C++ 4 30.03.2011 13:59
что такое датафайлы? и как их создать в Visual C++ ? Это вообще возможно? pufystyj Visual C++ 6 07.02.2011 20:50
Продукты от ViPNet, что это вообще такое? dr.Chas Софт 0 10.11.2010 11:51
как это работает и что оно вообще такое? kievlyanin Microsoft Office Excel 9 08.07.2009 14:33