C'è una lista infinita in c #? [chiuso]

-3

Voglio trovare l'analogo di Haskell dell'elenco infinito in linguaggio c #. Voglio utilizzare qualsiasi interfaccia possibile per tale elenco, come questi:

IEnumerable

ICollection

IList

    
posta LmTinyToon 13.09.2016 - 16:44
fonte

3 risposte

1

Ho trovato un articolo sull'argomento qui .

Essenzialmente puoi utilizzare la parola chiave yield per creare in modo programmatico il prossimo elemento del tuo elenco.

    
risposta data 13.09.2016 - 17:20
fonte
2

Usando IEnumerable e yield return puoi creare facilmente serie infinite.

static IEnumerable<uint> UpDown(uint min = uint.MinValue, uint max = uint.MaxValue, uint step = 1)
{
    if (min > max)
        throw new ArgumentOutOfRangeException("min", "'min' must be less than or equal to 'max'");
    var current = min;
    var last = current;
    var up = true;
    while (true)
    {
        yield return current;
        current += (uint)(up ? step : -step);
        if (up && (current >= max || current < last))
        {
            up = !up;
            current = max;
        }
        else if (!up && (current <= min || current > last))
        {
            up = !up;
            current = min;
        }
        last = current;
    }
}

static IEnumerable<int> Random()
{
    while (true)
        yield return 4;
}
    
risposta data 13.09.2016 - 17:29
fonte
1

Il tipo che più corrisponde a un elenco di tipo Haskell pigro, è IEnumerable<out T> .

    
risposta data 13.09.2016 - 17:23
fonte

Leggi altre domande sui tag