Array Slicing en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Corte de array con el método Linq en C#
  2. Array Slicing con la clase ArraySegment en C#
  3. Corte de array con una función de extensión en C#
Array Slicing en C#

Este tutorial presentará los métodos para dividir un array en C#.

Corte de array con el método Linq en C#

El proceso de dividir un array en una submatriz más pequeña se conoce como división de array. Linq se utiliza para integrar la funcionalidad de consulta con las estructuras de datos en C#. La función Take(x) de Linq copia x número de elementos desde el inicio de una estructura de datos. El siguiente ejemplo de código nos muestra cómo podemos dividir un array con 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);
      }
    }
  }
}

Producción :

one
two

Inicializamos el array de cadenas foo y la dividimos en otra matriz de cadenas, bar, que contiene los dos primeros elementos del array foo. Este método es muy limitado porque solo podemos dividir los elementos iniciales del array con este método.

Array Slicing con la clase ArraySegment en C#

La clase ArraySegment se utiliza para dividir un array en una submatriz en C#. El Constructor de la clase ArraySegment toma el array a segmentar, el índice inicial y el número de elementos a segmentar y nos da una submatriz. El siguiente ejemplo de código nos muestra cómo podemos dividir un array con la clase 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);
      }
    }
  }
}

Producción :

three
four
five

Inicializamos el array de cadenas a y la dividimos en un subarray segment que contiene 3 elementos a partir del índice 2 del array a con el constructor de la clase ArraySegment. Es un mejor enfoque porque podemos cortar un array desde el medio con este enfoque.

Corte de array con una función de extensión en C#

Los métodos de extensión nos permiten agregar funciones a los tipos de datos existentes sin declarar un tipo de datos personalizado. También podemos definir un método de extensión definido por el usuario en lugar de un método incorporado para cortar un array en C#. Este método de extensión puede tomar el índice inicial y final del segmento y devolver la submatriz dentro de este rango. El siguiente ejemplo de código nos muestra cómo definir una función de extensión para dividir un array 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);
      }
    }
  }
}

Producción :

three
four
five

Creamos un método de extensión, Slice(), que toma el índice inicial y final del segmento y devuelve el subarray cortado. Inicializamos el array de cadenas values y la dividimos en el array slice que contiene los valores del índice 2 al índice 4 del array 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

Artículo relacionado - Csharp Array