C # - So erstellen Sie ein Array aus einem Enumerator

8

Was ist in C # die eleganteste Art, aus einem Enumerator von Objekten ein Array von Objekten zu erstellen? z.B. In diesem Fall habe ich einen Enumerator, der Bytes zurückgeben kann, also möchte ich das in Byte [] umwandeln.

EDIT: Code, der den Enumerator erstellt:

%Vor%     
Greg 21.08.2010, 12:39
quelle

3 Antworten

11

Angenommen, Sie haben ein IEnumerable & lt; T & gt; , können Sie das Enumerable.ToArray Erweiterungsmethode:

%Vor%     
dtb 21.08.2010, 12:41
quelle
16

OK, vorausgesetzt, Sie haben einen tatsächlichen Enumerator ( IEnumerator<byte> ), können Sie eine while-Schleife verwenden:

%Vor%

In Wirklichkeit würde ich es vorziehen, das IEnumerator<T> in ein IEnumerable<T> zu verwandeln:

%Vor%

Dann können Sie das Array erhalten:

%Vor%

Natürlich wird davon ausgegangen, dass Sie .Net 3.5 oder höher verwenden.

    
Brian Genisio 21.08.2010 12:53
quelle
2

Da Sie eine IEnumerator<byte> haben und keine IEnumerable<byte> , Sie können nicht Linqs verwenden ToArray Methode. ToArray ist eine Erweiterungsmethode für IEnumerable<T> , nicht für IEnumerator<T> .

Ich würde vorschlagen, eine Erweiterungsmethode ähnlich wie Enumerable.ToArray zu schreiben, aber dann zum Erstellen eines Arrays Ihres Enumerators:

%Vor%

In diesem Fall iterieren Sie Ihren Enumerator Element für Element und fügen sie einem Array hinzu, dessen Größe allmählich zunimmt.

    
Ronald Wildenberg 21.08.2010 12:54
quelle

Tags und Links