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,6Combinar 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,5Anteponer 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,40Propagar 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,ePropagar 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,4Propagar 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,6Construir 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); // 6El 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,2Propagaciones 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)); // TruePropagar 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,4Una 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
- Sintaxis de expresiones de colección
- El elemento spread
- Tipado de colecciones según el destino
- Constructores de colecciones