Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стандартные потоки Console.In и Console.Out, Как они могут быть объектами абстрактног 
:(
    Опции темы
Luckylad
Дата 12.1.2007, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.11.2005
Где: Саратов/Россия

Репутация: нет
Всего: нет



Друзья,

объясните мне пожалуйста, если можете, каким образом стандартные потоки Console.In, Console.Out, Console.Error могут быть объектами абстрактных классов TextReader и TextWriter соответственно?

Ведь мы же не можем создать экземпляр абстрактного класса?

Цитата из "Полный справочник по C#" Герберт Шилдт :
"Чтобы создать символьный поток, поместите байтовый поток в одну из символьных потоковых C#-оболочек. В вершине иерархии символьных потоков находятся абстрактные классы TextReader и TextWriter.   ...(дальше)... Поток Console.In - экземпляр класса TextReader.     ...(дальше)...   Потоки Console.Out и Console.Error - объекты типа TextWriter."

Может я чего-то не понимаю? В чем тут дело?
PM MAIL WWW Skype   Вверх
archimed7592
Дата 12.1.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 7
Всего: 93



пример:
Код
StreamWriter sw = new StreamWriter (...);
TextWriter tw = sw;
теперь "tw объект абстрактного класса TextWriter"...хотя, на самом деле это не так...с консолью тож самое.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
ivashkanet
Дата 13.1.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Посмотрев под дебагером, увидел, что Console.Out имеет тип SyncTextWriter
Получить его можно так: 
Код
            TextWriter sw = new StreamWriter(@"C:\English.chm");
            TextWriter ssw = TextWriter.Synchronized(sw);

Походу, это потокобезопасная обертка к TextWriter

Luckylad, срочно читать про наследование и приведение типов  smile 
PM MAIL WWW ICQ   Вверх
Luckylad
Дата 13.1.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.11.2005
Где: Саратов/Россия

Репутация: нет
Всего: нет



О приведенном выше приведении типов я знаю и сам ни раз использовал.
Видимо я не правильно понял Шилдта - мне подумалось, что стандартные потоки являются непосредственно созданными экземплярами класса TextReader/TextWriter, то есть 
Код

TextReader tr = new TextReader();


вот поэтому вопрос и возник


Спасибо
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.