Slicing di array in C#
-
Slicing di array con il metodo Linq in
C#
-
Slicing di array con la classe
ArraySegment
inC#
-
Slicing di array con una funzione di estensione in
C#
Questo tutorial introdurrà i metodi per suddividere un array in C#.
Slicing di array con il metodo Linq in C#
Il processo di suddivisione di un array in un sotto-array più piccolo è noto come affettatura di array. Linq viene utilizzato per integrare la funzionalità di query con le strutture dati in C#. La funzione Take(x)
di Linq copia il numero x
di elementi dall’inizio di una struttura dati. Il seguente esempio di codice ci mostra come possiamo suddividere un array con Linq in C#.
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);
}
}
}
}
Produzione:
one two
Abbiamo inizializzato l’array di stringhe foo
e lo abbiamo suddiviso in un altro array di stringhe - bar
, contenente i primi due elementi dell’array foo
. Questo metodo è molto limitato perché possiamo solo suddividere gli elementi iniziali dell’array con questo metodo.
Slicing di array con la classe ArraySegment
in C#
La classe ArraySegment
viene utilizzata per suddividere un array in un sotto-array in C#. Il Costruttore della classe ArraySegment
prende l’array da segmentare, l’indice iniziale e il numero di elementi da segmentare e ci fornisce un sotto-array. Il seguente esempio di codice ci mostra come possiamo suddividere un array con la classe ArraySegment
in C#.
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);
}
}
}
}
Produzione:
three four five
Abbiamo inizializzato l’array di stringhe a
e lo abbiamo suddiviso in un sotto-array slice
contenente 3 elementi a partire dall’indice 2 dell’array a
con il costruttore della classe ArraySegment
. È un approccio migliore perché possiamo tagliare un array dal centro con questo approccio.
Slicing di array con una funzione di estensione in C#
I metodi di estensione ci consentono di aggiungere funzioni ai tipi di dati esistenti senza dichiarare un tipo di dati personalizzato. Possiamo anche definire un metodo di estensione definito dall’utente invece di un metodo integrato per affettare un array in C#. Questo metodo di estensione può prendere l’indice iniziale e finale della fetta e restituire il sotto-array all’interno di questo intervallo. L’esempio di codice seguente mostra come definire una funzione di estensione per suddividere una matrice in C#.
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);
}
}
}
}
Produzione:
three four five
Abbiamo creato un metodo di estensione, Slice()
, che prende l’indice iniziale e finale della fetta e restituisce il sotto-array suddiviso in porzioni. Abbiamo inizializzato l’array di stringhe values
e lo abbiamo suddiviso nell’array slice
contenente i valori dall’indice 2
all’indice 4
dell’array values
.
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