it-swarm.com.de

Wie erstelle ich ein Array mit einer Folge von ganzen Zahlen in C #?

F # hat Sequenzen das erlaubt das Erstellen von Sequenzen:

seq { 0 .. 10 }

Erstellen Sie eine Zahlenfolge von 0 bis 10.

Gibt es etwas Ähnliches in C #?

96
Budda

Sie können Enumerable.Range(0, 10); verwenden. Beispiel:

var seq = Enumerable.Range(0, 10);

MSDN-Seite hier .

174
alexn
Enumerable.Range(0, 11);

Erzeugt eine Folge von ganzen Zahlen innerhalb eines angegebenen Bereichs.

http://msdn.Microsoft.com/de-de/library/system.linq.enumerable.range.aspx

29
Pauli Østerø

Sie könnten eine einfache Funktion erstellen. Dies würde für eine kompliziertere Sequenz funktionieren. Ansonsten sollte der Enumerable.Range funktionieren.

IEnumerable<int> Sequence(int n1, int n2)
{
    while (n1 <= n2)
    {
        yield return  n1++;
    }
}
15
Josiah Ruddell

Linq-Projektion mit der selten verwendeten Indexer-Überladung (i) :

(new int[11]).Select((o,i) => i)

Ich bevorzuge diese Methode wegen ihrer Flexibilität.

Zum Beispiel, wenn ich Abend möchte:

(new int[11]).Select((item,i) => i*2)

Oder wenn ich 5-Minuten-Schritte von einer Stunde will:

(new int[12]).Select((item,i) => i*5)

Oder Schnüre:

(new int[12]).Select((item,i) => "Minute:" + i*5)
2
b_levitt

Meine Implementierung:

    private static IEnumerable<int> Sequence(int start, int end)
    {
        switch (Math.Sign(end - start))
        {
            case -1:
                while (start >= end)
                {
                    yield return start--;
                }

                break;

            case 1:
                while (start <= end)
                {
                    yield return start++;
                }

                break;

            default:
                yield break;
        }
    }
1
Dicaste

Wenn Sie eine Zahlenfolge (IEnumerable<int>) von 0 zu einer Variablen end auflisten möchten, versuchen Sie es

Enumerable.Range(0, ++end);

Um eine Zahlenfolge von 0 bis 1000 zu erhalten, soll die Reihenfolge bei 0 beginnen (unter Berücksichtigung von 1001 Zahlen zwischen 0 und 1000).


Wenn Sie eine unbegrenzte lineare Reihe wünschen, können Sie eine Funktion wie schreiben

IEnumerable<int> Series(int k = 0, int n = 1, int c = 1)
{
    while (true)
    {
        yield return k;
        k = (c * k) + n;
    }
}

das könntest du gerne gebrauchen

var ZeroTo1000 = Series().Take(1001);

Wenn Sie eine Funktion wünschen, können Sie wiederholt anrufen, um steigende Nummern zu generieren. Vielleicht möchten Sie etwas Ähnliches.

using System.Threading;

private static int orderNumber = 0;

int Seq()
{
    return Interlocked.Increment(ref orderNumber);
}

Wenn Sie Seq() aufrufen, wird die nächste Bestellnummer zurückgegeben und der Zähler erhöht.

0
Jodrell