Tipado de colecciones según el destino
Deje que el tipo de destino determine la creación de la colección.
Tipado de colecciones según el destino es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 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.
¿Qué es el tipado según el destino?
El tipado según el destino significa que el compilador infiere qué debe construir una expresión de colección a partir del contexto en el que se utiliza, en lugar de partir de un tipo explícito en el lado derecho.
using System;
int[] numbers = [1, 2, 3]; // target type is int[]
Console.WriteLine(numbers.GetType().Name); // Int32[]El destino determina el tipo
El mismo literal se convierte en un tipo concreto diferente según el tipo de la variable, el parámetro o el valor de retorno al que se asigna.
using System;
using System.Collections.Generic;
int[] asArray = [1, 2, 3];
List<int> asList = [1, 2, 3];
Console.WriteLine(asArray is int[]); // True
Console.WriteLine(asList is List<int>); // TrueTipado según el destino en llamadas a métodos
Cuando un parámetro de método es de tipo colección, el literal del argumento adopta el tipo de destino de ese parámetro.
using System;
using System.Collections.Generic;
static void Show(List<int> items) =>
Console.WriteLine(string.Join(",", items));
Show([10, 20, 30]); // target-typed to List<int>Tipado según el destino en los retornos
El cuerpo de un método puede devolver directamente una expresión de colección; el tipo de retorno declarado proporciona el destino.
using System;
using System.Collections.Generic;
static List<string> Tags() => ["csharp", "dotnet", "ranges"];
Console.WriteLine(Tags().Count); // 3Inferencia del tipo de elemento
El tipo de elemento procede del destino. Si el destino es double[], los literales enteros se convierten automáticamente a double mediante una conversión implícita.
using System;
double[] values = [1, 2, 3]; // ints widen to double
Console.WriteLine(values[0] + 0.5); // 1.5Interfaces como destinos
Las expresiones de colección pueden tener como destino interfaces como IEnumerable<T>, IReadOnlyList<T> o ICollection<T>; el compilador elige un tipo concreto adecuado.
using System;
using System.Collections.Generic;
IReadOnlyList<int> ro = [1, 2, 3];
Console.WriteLine(ro.Count); // 3Operador ternario y tipado según el destino
Ambas ramas de una expresión condicional pueden ser expresiones de colección, y cada una adopta el tipo de destino común del resultado.
using System;
bool useDefaults = false;
int[] config = useDefaults ? [0, 0, 0] : [1, 2, 3];
Console.WriteLine(string.Join(",", config)); // 1,2,3var no es un destino
No puede escribir var x = [1, 2, 3]; porque var no proporciona ningún tipo de destino. Especifique un tipo explícito o use la expresión donde se espere un tipo.
using System;
// var x = [1, 2, 3]; // compile error: no target type
int[] x = [1, 2, 3]; // ok
Console.WriteLine(x.Length); // 3Tipado según el destino con propagaciones
El tipado según el destino y las propagaciones cooperan: el destino decide el tipo final de la colección, mientras que las propagaciones proporcionan el contenido.
using System;
using System.Collections.Generic;
int[] src = [1, 2, 3];
List<int> copy = [..src]; // copies into a List<int>
Console.WriteLine(copy is List<int>); // TrueReducir el ruido
El tipado según el destino elimina la repetición de nombres de tipos. Compare la forma antigua y redundante con la nueva, más concisa.
using System;
// old: type repeated
int[] oldWay = new int[] { 1, 2, 3 };
// new: type only on the left
int[] newWay = [1, 2, 3];
Console.WriteLine(oldWay.Length == newWay.Length); // TrueUnir todos los conceptos
Aquí, un único auxiliar acepta cualquier colección de solo lectura, y los llamadores pasan libremente literales cuyo tipo se determina según el destino.
using System;
using System.Collections.Generic;
static int Count(IReadOnlyCollection<int> c) => c.Count;
Console.WriteLine(Count([1, 2, 3, 4])); // 4Comprobación rápida
Compruebe su dominio del tipado según el destino.
Resumen
Ha aprendido cómo se determina el tipo de las expresiones de colección según el destino.
- El tipo de destino (variable, parámetro o retorno) guía la construcción.
- Los tipos de elemento pueden ampliarse para coincidir con el destino.
- Las interfaces como
IReadOnlyList<T>son destinos válidos. varno puede ser un destino.
Preguntas frecuentes
¿La lección «Tipado de colecciones según el destino» es gratis?
Sí — el texto completo de «Tipado de colecciones según el destino» 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 «Tipado de colecciones según el destino»?
Deje que el tipo de destino determine la creación de la colección. 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 3 de 4.
¿Cuánto tiempo toma la lección «Tipado de colecciones según el destino»?
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