Array Slicing in C#

Muhammad Maisam Abbas 16 Februar 2024
  1. Array-Slicing mit der Linq-Methode in C#
  2. Array Slicing Mit der Klasse ArraySegment in C#
  3. Array Slicing mit einer Erweiterungsfunktion in C#
Array Slicing in C#

In diesem Tutorial werden die Methoden zum Schneiden eines Arrays in C# vorgestellt.

Array-Slicing mit der Linq-Methode in C#

Das Aufteilen eines Arrays in ein kleineres Unterarray wird als Array-Slicing bezeichnet. Der Linq wird verwendet, um die Abfragefunktionalität in die Datenstrukturen in C# zu integrieren. Die Funktion Take(x) von Linq kopiert die Anzahl der Elemente x vom Beginn einer Datenstruktur an. Das folgende Codebeispiel zeigt uns, wie wir ein Array mit dem Linq in C# schneiden können.

using System;
using System.Linq;

namespace array_slicing {
  class Program {
    static void Main(string[] args) {
      string[] foo = { "one", "two", "three", "four", "five" };

      string[] bar = foo.Take(2).ToArray();
      foreach (var e in bar) {
        Console.WriteLine(e);
      }
    }
  }
}

Ausgabe:

one
two

Wir haben das String-Array foo initialisiert und in ein anderes String-Array aufgeteilt - bar, das die ersten beiden Elemente des foo-Arrays enthält. Diese Methode ist sehr begrenzt, da wir mit dieser Methode nur die Startelemente des Arrays aufteilen können.

Array Slicing Mit der Klasse ArraySegment in C#

Die Klasse ArraySegment wird verwendet, um ein Array in C# in ein Unterarray zu unterteilen. Der Konstruktor der Klasse ArraySegment nimmt das zu segmentierende Array, den Startindex und die Anzahl der zu segmentierenden Elemente und gibt uns ein Unterarray. Das folgende Codebeispiel zeigt uns, wie wir ein Array mit der Klasse ArraySegment in C# aufteilen können.

using System;
using System.Linq;

namespace array_slicing {
  class Program {
    static void Main(string[] args) {
      string[] a = { "one", "two", "three", "four", "five" };
      var segment = new ArraySegment<string>(a, 2, 3);
      foreach (var s in segment) {
        Console.WriteLine(s);
      }
    }
  }
}

Ausgabe:

three
four
five

Wir haben das Array von Strings a initialisiert und es mit dem Konstruktor der Klasse ArraySegment in ein Sub-Array segment aufgeteilt, das 3 Elemente enthält, beginnend mit Index 2 des Arrays a. Dies ist ein besserer Ansatz, da wir mit diesem Ansatz ein Array aus der Mitte herausschneiden können.

Array Slicing mit einer Erweiterungsfunktion in C#

Mit den Erweiterungsmethoden können wir vorhandenen Datentypen Funktionen hinzufügen, ohne einen benutzerdefinierten Datentyp zu deklarieren. Wir können auch eine benutzerdefinierte Erweiterungsmethode anstelle einer integrierten Methode zum Schneiden eines Arrays in C# definieren. Diese Erweiterungsmethode kann den Start- und Endindex des Slice verwenden und das Subarray innerhalb dieses Bereichs zurückgeben. Das folgende Codebeispiel zeigt, wie Sie eine Erweiterungsfunktion definieren, um ein Array in C# zu schneiden.

using System;
using System.Collections.Generic;

namespace iterate_through_a_list {
  public static class Extensions {
    public static T[] Slice<T>(this T[] source, int start, int end) {
      if (end < 0) {
        end = source.Length + end;
      }
      int len = end - start;

      T[] res = new T[len];
      for (int i = 0; i < len; i++) {
        res[i] = source[i + start];
      }
      return res;
    }
  }
  class Program {
    static void Main(string[] args) {
      string[] values = { "one", "two", "three", "four", "five" };
      string[] slice = values.Slice(2, 4);
      foreach (var s in slice) {
        Console.WriteLine(s);
      }
    }
  }
}

Ausgabe:

three
four
five

Wir haben eine Erweiterungsmethode namens Slice() erstellt, die den Start- und Endindex des Slice verwendet und das in Scheiben geschnittene Subarray zurückgibt. Wir haben das Array der Zeichenketten Werte initialisiert und in das Array Slice() aufgeteilt, das Werte vom Index 2 bis zum Index 4 des Arrays Werte enthält.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Verwandter Artikel - Csharp Array