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%Angenommen, Sie haben ein IEnumerable & lt; T & gt; , können Sie das Enumerable.ToArray Erweiterungsmethode:
%Vor% OK, vorausgesetzt, Sie haben einen tatsächlichen Enumerator ( IEnumerator<byte>
), können Sie eine while-Schleife verwenden:
In Wirklichkeit würde ich es vorziehen, das IEnumerator<T>
in ein IEnumerable<T>
zu verwandeln:
Dann können Sie das Array erhalten:
%Vor%Natürlich wird davon ausgegangen, dass Sie .Net 3.5 oder höher verwenden.
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:
In diesem Fall iterieren Sie Ihren Enumerator Element für Element und fügen sie einem Array hinzu, dessen Größe allmählich zunimmt.
Tags und Links arrays c# enumerator