Array Slicing in C#
-
Array-Slicing mit der Linq-Methode in
C#
-
Array Slicing Mit der Klasse
ArraySegment
inC#
-
Array Slicing mit einer Erweiterungsfunktion 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.
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