Re[13]: Десериализация в массив или в список?
От: alexzzzz  
Дата: 24.04.21 22:49
Оценка:
Здравствуйте, Passerby, Вы писали:

A>>Перебирается конечно, но просто в цикле, без создания промежуточных коллекций. В этом и смысл.

P>Если без промежуточной коллекции, то для каждой итерации по-новому разбирается строка (предыдущий разбор нигде в промежуточной коллекции не сохранен).

Нет. В этом примере, чтобы напечатать на экране очередное значение, для каждой итерации перезапуск часов с нуля не происходит
  Скрытый текст
using System;
using System.Collections.Generic;
using System.Threading;

foreach (var value in Generate())
{
    Console.WriteLine(value);
}

IEnumerable<int> Generate()
{
    while (true)
    {
        Thread.Sleep(1000);
        yield return DateTime.Now.Second;
    }
}


Тут тоже
  Скрытый текст
using System;
using System.Collections.Generic;

foreach (var value in Parse(",,,1 20,  300; 4004++"))
{
    Console.WriteLine(value);
}

IEnumerable<int> Parse(string input)
{
    var index = 0;

    while (true)
    {
        while (index < input.Length && char.IsDigit(input[index]) == false)
        {
            index++;
        }

        if (index >= input.Length)
        {
            yield break;
        }

        var count = 1;
        while (index + count < input.Length && char.IsDigit(input[index + count]))
        {
            count++;
        }

        yield return int.Parse(input[index..(index + count)]);
        index += count + 1;
    }
}
Отредактировано 24.04.2021 22:54 alexzzzz . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.