![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Очень огорчился, узнав, что переопределить операторы << и >> в своём классе можно только для аргумента типа int, т.е. нельзя например сделать как в С++:
Неужели в майкрософте просто забыли об этой удобной фиче ?.... Вот мои соображения по поводу, как можно обойти это ограничение: 1) кастовать свои типы в тип int (естессна, int-ом будет какой-то ID) 2) передавать полученный int в потоковый оператор << 3) в потоковом операторе "восстанавливать" объект по int-у 4) далее потоковый оператор делает свою работу над объектом, т.е. сохраняет его в файл, выводит на консоль и т.п. Конечно, придётся порождать свои объекты от некоего базового класса, поддерживающего неявное преобразование к int-у. Кроме того, придётся "завернуть" многие базовые типы (такие как строки и пр.) в свои классы. Но это уже как говорится, развитие идеи. Вот что у меня получилось:
Просьба не пинать ногами, я в шарпе совсем новичок Заранее спасибо за ответ. -------------------- ![]() |
||||
|
|||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Интересно..
Вот только я немного не пойму практическую сторону дела. Зачем нужно такое переопределение, да и вообще зачем этот ">>" нужен... Приведи, пожалйста, пример. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Привожу. Тот же BinaryWriter/Reader было бы проще использовать, если бы вместо вызова "Read" или "Write" для каждой переменной можно было пользоваться "потоковыми" операторами:
В VC++ можно создать свой класс (например, лог-файл), в котором переопределить операторы << и >> (например, для записи в лог-файл различных значений, строк, тек. времени и пр.). Последний довод - с консолью было бы удобнее (если и не удобнее, то хотя бы интуитивно понятнее) работать с пом. этих операторов. З.Ы. Пришёл, понимаешь, сишник -- и давай права качать Добавлено @ 14:09 З.Ы. я знаю о возможности делать типа такого: Console.WriteLine(" str = {0}, x = {1}", str, x)... но хотелось бы всё-таки чего-то добиться и от <</>>... -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |