Heim > Backend-Entwicklung > C++ > Wie kann ich Array-Slices in C# effizient erstellen, ohne Daten zu kopieren?

Wie kann ich Array-Slices in C# effizient erstellen, ohne Daten zu kopieren?

Mary-Kate Olsen
Freigeben: 2025-01-14 20:12:42
Original
308 Leute haben es durchsucht

How Can I Efficiently Create Array Slices in C# Without Copying Data?

C#-Array-Teilmengen: Array-Teile effizient verarbeiten

C#-Arrays, die Elemente eines einzelnen Datentyps im zusammenhängenden Speicher speichern, erfordern oft die Arbeit mit bestimmten Teilen, ohne das Original zu verändern. Dies ist besonders relevant, wenn es um umfangreiche Arrays geht, wie bei der Netzwerkkommunikation (z. B. Empfang einer festgelegten Anzahl von Bytes von einem Socket). Während das direkte Array-Slicing nicht wie in einigen Sprachen integriert ist, bietet ArraySegment<T> eine äußerst effiziente Lösung.

Die Herausforderung:

Stellen Sie sich ein großes Byte-Array vor:

<code class="language-csharp">byte[] foo = new byte[4096];</code>
Nach dem Login kopieren

Die Aufgabe besteht darin, die anfänglichen x Bytes zu extrahieren, ohne ein doppeltes Array oder eine IEnumerable<byte> Sammlung zu erstellen.

Die ArraySegment<T>Lösung:

Anstelle des expliziten Slicings nutzt C# ArraySegment<T>:

<code class="language-csharp">string[] a = { "one", "two", "three", "four", "five" };
var segment = new ArraySegment<string>(a, 1, 2);</code>
Nach dem Login kopieren

ArraySegment<T> fungiert als leichter Wrapper und verweist auf einen Teil eines vorhandenen Arrays ohne Datenduplizierung.

Verstehen ArraySegment<T>:

Der ArraySegment<T>-Konstruktor benötigt drei Argumente:

  1. Das Quellarray.
  2. Der Startindex (nullbasiert).
  3. Die Länge der Teilmenge.

Im Beispiel zeigt segment auf „zwei“ und „drei“ innerhalb des Arrays a.

Vorteile von ArraySegment<T>:

  • Speicheroptimierung: Vermeidet unnötiges Array-Kopieren, was bei großen Datenmengen entscheidend ist.
  • Leistungssteigerungen: Der Zugriff auf Elemente über ArraySegment<T> ist schneller als das Erstellen neuer Arrays.
  • LINQ-Kompatibilität: Nahtlose Integration mit LINQ zum Filtern und Bearbeiten der Array-Teilmenge.

Zusammenfassung:

ArraySegment<T> bietet einen optimierten und effizienten Ansatz für die Arbeit mit Array-Teilmengen in C#. Es steigert die Leistung und reduziert den Speicherverbrauch, was es ideal für Szenarien mit großen Arrays und Netzwerkoperationen macht.

Das obige ist der detaillierte Inhalt vonWie kann ich Array-Slices in C# effizient erstellen, ohne Daten zu kopieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage