Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прошу помощи по примерам применению итераторов описанных в книге Скита / 19 сообщений из 19, страница 1 из 1
11.10.2016, 13:24
    #39324447
k120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
Добрый день
Читаю книгу Скита C# для профессионалов. Завяз на главе с примерами применения итераторов в реальных примерах. А именно на вот таком вот примере:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;

namespace Chapter06
{
    [Description("Listing 6.8")]
    class LineReader
    {
        public static IEnumerable<string> ReadLines(string filename)
        {
            using (TextReader reader = File.OpenText(filename))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    yield return line;
                }
            }
        }

        static void Main()
        {
            //1
            foreach (string line in ReadLines("../../LineReader.cs"))
            {
                Console.WriteLine(line);
            }
            //2
            using (TextReader reader = File.OpenText("../../LineReader.cs"))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }

            Console.ReadKey();
        }
    }
}


Непонимание в следующем: в книге пишется, что решение задачи построчного чтения текстового файла будет лучше при использовании итератора (1) , а реализация чтения через using(2) является не гуд..... Вопрос - почему?
в книге это освещено достаточно скудно......
...
Рейтинг: 0 / 0
11.10.2016, 14:20
    #39324525
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
k120,

Разве не очевидно? Решение через using требует наличие дополнительного кода обвязки, а именно: открытие файла на чтение. Если требуется много и часто читать файлы по-строчно в разных местах программы, будет много дублирования кода.

Но на мой взгляд, решение на итераторе, как привёл Скит -- отвратительное решение. В учебных целях такое решение конечно можно привести, и резюмировать следующими словами: всё это круто, но так делать нельзя!!
...
Рейтинг: 0 / 0
11.10.2016, 14:28
    #39324547
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
Собсно, метод ReadLines существует в .NET, если я правильно понял, с 4-й версии
https://msdn.microsoft.com/ru-ru/library/dd383503(v=vs.110).aspx

Почему так делать нельзя?
...
Рейтинг: 0 / 0
11.10.2016, 14:31
    #39324550
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
Shocker.ProПочему так делать нельзя?

Слишком много ответственности возлагается на один простой метод. Для простых случаев подойдёт, но вообще лучше писать что-то отдельно, под задачи.
...
Рейтинг: 0 / 0
11.10.2016, 14:31
    #39324552
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
Ну разве что, в штатном вызывается Dispose по окончании файла, чего нет в вышеприведенном примере
...
Рейтинг: 0 / 0
11.10.2016, 14:32
    #39324556
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
Shocker.ProНу разве что, в штатном вызывается Dispose по окончании файла, чего нет в вышеприведенном примере

Можно бросить чтение на пол пути, и ресурс не будет освобождён.
...
Рейтинг: 0 / 0
11.10.2016, 14:33
    #39324559
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
Shocker.ProНу разве что, в штатном вызывается Dispose по окончании файла, чего нет в вышеприведенном примере

Как нет, есть using.
...
Рейтинг: 0 / 0
11.10.2016, 14:36
    #39324563
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
hVostt,

А, блин, тупанул.
Смотрю исходники , там несколько понавороченнее ))
...
Рейтинг: 0 / 0
11.10.2016, 15:28
    #39324621
k120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
hVostt,

Правильно ли я понимаю, этот пример - показывает как вынести логику работы с файлом в отдельный метод, но делает это через итератор?
...
Рейтинг: 0 / 0
11.10.2016, 17:45
    #39324764
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
k120hVostt,

Правильно ли я понимаю, этот пример - показывает как вынести логику работы с файлом в отдельный метод, но делает это через итератор?

Это пример, как, грубо говоря, текстовый файл превратить в ленивую коллекцию строк.
...
Рейтинг: 0 / 0
12.10.2016, 10:11
    #39325047
k120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
hVostt,

Спасибо огромное.
Специфичное изложение в данной книге порой ставит в тупик :)
...
Рейтинг: 0 / 0
12.10.2016, 10:19
    #39325060
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
k120hVostt,

Спасибо огромное.
Специфичное изложение в данной книге порой ставит в тупик :)

Скит он такой
...
Рейтинг: 0 / 0
12.10.2016, 10:36
    #39325072
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
k120hVostt,

Спасибо огромное.
Специфичное изложение в данной книге порой ставит в тупик :)
Львиная доля из них написана плохо, дабы произвести впечатление своим объемом и огрести поболее бабла. Никому нельзя верить!
...
Рейтинг: 0 / 0
12.10.2016, 11:26
    #39325144
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
hVosttShocker.ProНу разве что, в штатном вызывается Dispose по окончании файла, чего нет в вышеприведенном примере

Можно бросить чтение на пол пути, и ресурс не будет освобождён.
Глупости и незнание материала. Читайте
кому полусвежий хабахар нравится
...
Рейтинг: 0 / 0
12.10.2016, 11:33
    #39325153
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
mikronГлупости и незнание материала. Читайте
кому полусвежий хабахар нравится

При чём тут foreach? Получи енумератор и не вызови у него Dispose(), получишь утечку ресурсов.
...
Рейтинг: 0 / 0
12.10.2016, 14:44
    #39325364
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
hVosttПри чём тут foreach? Получи енумератор и не вызови у него Dispose(), получишь утечку ресурсов.
Это верно, но разве это аргумент в споре за/против итератора?
Возможно я не понял ваш поинт, извените.
...
Рейтинг: 0 / 0
12.10.2016, 17:41
    #39325552
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
mikronhVosttПри чём тут foreach? Получи енумератор и не вызови у него Dispose(), получишь утечку ресурсов.
Это верно, но разве это аргумент в споре за/против итератора?
Возможно я не понял ваш поинт, извените.

Ну возможно итератор в данном случае не так уж и плох, я наверное погорячился. Только надо понимать, что чтение строк может быть сложнее, например, понадобится возвращаться и перечитывать строки, или понадобится ввести разные стратегии чтерия, и в последствии от итератора будет тяжело отделаться.
...
Рейтинг: 0 / 0
13.10.2016, 11:02
    #39326020
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
hVostt
При чём тут foreach? Получи енумератор и не вызови у него Dispose(), получишь утечку ресурсов.
hVosttЭто пример, как, грубо говоря, текстовый файл превратить в ленивую коллекцию строк.
Ленивость поможет избежать утечки ресурсов, если не коллекции, то программиста, ибо он не знает что есть Current и MoveNext, а если все же сподобиться, то
...
Рейтинг: 0 / 0
13.10.2016, 11:15
    #39326037
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи по примерам применению итераторов описанных в книге Скита
ЕвгенийВЛенивость поможет избежать утечки ресурсов, если не коллекции, то программиста, ибо он не знает что есть Current и MoveNext, а если все же сподобиться, то

Есть ещё одна проблема в ленивом итераторе Скита: до первой попытки чтения мы не узнаем об ошибке открытия файла, например. Т.е. мы получим не ту ленивость, что нам требуется, да и не там.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прошу помощи по примерам применению итераторов описанных в книге Скита / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]