0Pricing
C# Academy · Lección

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>); // True

Tipado 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); // 3

Inferencia 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.5

Interfaces 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); // 3

Operador 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,3

var 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); // 3

Tipado 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>); // True

Reducir 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); // True

Unir 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])); // 4

Comprobació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.
  • var no 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

  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