0Pricing
C# Academy · Lección

El elemento spread

Combine colecciones con el operador spread.

El elemento spread es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

El elemento de propagación ..

Dentro de una expresión de colección, el elemento de propagación .. inserta el contenido de otra colección. Es la forma de combinar secuencias de manera declarativa.

using System;

int[] a = [1, 2, 3];
int[] b = [4, 5, 6];
int[] all = [..a, ..b];
Console.WriteLine(string.Join(",", all)); // 1,2,3,4,5,6

Combinar propagaciones y elementos individuales

Puede intercalar libremente elementos de propagación con valores individuales, y se conserva el orden.

using System;

int[] middle = [2, 3, 4];
int[] result = [1, ..middle, 5];
Console.WriteLine(string.Join(",", result)); // 1,2,3,4,5

Anteponer y agregar

Las propagaciones hacen trivial «agregar al principio» o «agregar al final» y producen una colección nueva en lugar de modificar la original.

using System;

int[] core = [10, 20, 30];
int[] withHead = [0, ..core];
int[] withTail = [..core, 40];
Console.WriteLine(string.Join(",", withHead)); // 0,10,20,30
Console.WriteLine(string.Join(",", withTail)); // 10,20,30,40

Propagar varias fuentes

Puede propagar cualquier número de colecciones en una sola. Esto concatena varias listas en una única expresión.

using System;
using System.Collections.Generic;

List<string> x = ["a", "b"];
List<string> y = ["c"];
List<string> z = ["d", "e"];
List<string> merged = [..x, ..y, ..z];
Console.WriteLine(string.Join(",", merged)); // a,b,c,d,e

Propagar distintos tipos de colección

La fuente de propagación puede ser cualquier enumerable: una matriz en una lista, una lista en una matriz, etc. El tipo de destino controla el resultado.

using System;
using System.Collections.Generic;

int[] arr = [1, 2];
List<int> list = [3, 4];
int[] combined = [..arr, ..list];
Console.WriteLine(string.Join(",", combined)); // 1,2,3,4

Propagar IEnumerable

Incluso se pueden propagar secuencias diferidas de LINQ; se enumeran cuando se crea la colección nueva.

using System;
using System.Linq;

var evens = Enumerable.Range(1, 6).Where(n => n % 2 == 0);
int[] result = [0, ..evens];
Console.WriteLine(string.Join(",", result)); // 0,2,4,6

Construir colecciones progresivamente

Las propagaciones son ideales para construir colecciones de forma incremental sin llamadas imperativas a Add.

using System;

int[] baseline = [1, 2, 3];
int[] extra = [4, 5];
int[] full = [..baseline, ..extra, 6];
Console.WriteLine(full.Length); // 6

El orden es importante

La secuencia resultante sigue el orden textual de los elementos y las propagaciones, por lo que cambiar estas últimas modifica el resultado.

using System;

int[] a = [1, 2];
int[] b = [3, 4];
Console.WriteLine(string.Join(",", [..a, ..b])); // 1,2,3,4
Console.WriteLine(string.Join(",", [..b, ..a])); // 3,4,1,2

Propagaciones frente a Concat

Las propagaciones suelen reemplazar a Concat + ToArray. Se leen con mayor claridad y permiten que el compilador dimensione el resultado de forma eficiente.

using System;
using System.Linq;

int[] a = [1, 2];
int[] b = [3, 4];
// old
int[] oldWay = a.Concat(b).ToArray();
// new
int[] newWay = [..a, ..b];
Console.WriteLine(oldWay.SequenceEqual(newWay)); // True

Propagar en spans

Como el destino puede ser un span, puede combinar datos con una posible asignación en la pila para rutas en las que el rendimiento sea importante.

using System;

ReadOnlySpan<int> head = [1, 2];
ReadOnlySpan<int> tail = [3, 4];
int[] joined = [..head, ..tail];
Console.WriteLine(string.Join(",", joined)); // 1,2,3,4

Una combinación práctica

Aquí combinamos la configuración predeterminada con las sobrescrituras en una sola expresión, manteniendo después de los valores predeterminados los valores posteriores.

using System;

string[] defaults = ["--verbose", "--color"];
string[] userArgs = ["--output=log.txt"];
string[] finalArgs = [..defaults, ..userArgs];
Console.WriteLine(string.Join(" ", finalArgs));

Comprobación rápida

Compruebe su comprensión del elemento de propagación.

Resumen

Ha aprendido el elemento de propagación .. dentro de las expresiones de colección.

  • [..a, ..b] concatena colecciones.
  • Las propagaciones se combinan con elementos individuales y conservan el orden.
  • Las fuentes pueden ser matrices, listas, spans o cualquier IEnumerable.
  • Es una alternativa más clara a Concat().ToArray().

Preguntas frecuentes

¿La lección «El elemento spread» es gratis?

Sí — el texto completo de «El elemento spread» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El elemento spread»?

Combine colecciones con el operador spread. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «El elemento spread»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Sintaxis de expresiones de colección
  2. El elemento spread
  3. Tipado de colecciones según el destino
  4. Constructores de colecciones
← Volver a C# Academy