Tranchage de tableau en C#

Muhammad Maisam Abbas 16 février 2024
  1. Tranchage de tableau avec la méthode Linq en C#
  2. Array Slicing avec la classe ArraySegment en C#
  3. Tranchage de tableau avec une fonction d’extension en C#
Tranchage de tableau en C#

Ce didacticiel présentera les méthodes pour découper un tableau en C#.

Tranchage de tableau avec la méthode Linq en C#

Le processus de découpage d’un tableau en un sous-tableau plus petit est appelé découpage de tableau. Le Linq est utilisé pour intégrer la fonctionnalité de requête aux structures de données en C#. La fonction Take(x) de Linq copie x nombre d’éléments à partir du début d’une structure de données. L’exemple de code suivant nous montre comment découper un tableau avec Linq en 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);
      }
    }
  }
}

Production:

one two

Nous avons initialisé le tableau de chaînes foo et l’avons découpé en un autre tableau de chaînes - bar, contenant les deux premiers éléments du tableau foo. Cette méthode est très limitée car nous ne pouvons découper que les éléments de départ du tableau avec cette méthode.

Array Slicing avec la classe ArraySegment en C#

La classe ArraySegment est utilisée pour découper un tableau en un sous-tableau en C#. Le constructeur de la classe ArraySegment prend le tableau à segmenter, l’index de départ et le nombre d’éléments à segmenter et nous donne un sous-tableau. L’exemple de code suivant nous montre comment découper un tableau avec la classe ArraySegment en 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);
      }
    }
  }
}

Production:

three four five

Nous avons initialisé le tableau de chaînes a et l’avons découpé en un sous-tableau segment contenant 3 éléments à partir de l’index 2 du tableau a avec le constructeur de la classe ArraySegment. C’est une meilleure approche car nous pouvons découper un tableau à partir du milieu avec cette approche.

Tranchage de tableau avec une fonction d’extension en C#

Les méthodes d’extension nous permettent d’ajouter des fonctions aux types de données existants sans déclarer un type de données personnalisé. Nous pouvons également définir une méthode d’extension définie par l’utilisateur au lieu d’une méthode intégrée pour découper un tableau en C#. Cette méthode d’extension peut prendre l’index de début et de fin de la tranche et renvoyer le sous-tableau dans cette plage. L’exemple de code suivant nous montre comment définir une fonction d’extension pour découper un tableau en 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);
      }
    }
  }
}

Production:

three four five

Nous avons créé une méthode d’extension, Slice(), qui prend l’index de début et de fin de la tranche et renvoie le sous-tableau découpé. Nous avons initialisé le tableau de chaînes values et l’avons découpé dans le tableau slice contenant les valeurs de l’index 2 à l’index 4 du tableau values.

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

Article connexe - Csharp Array