Déduction du type cible pour les collections
Laissez le type cible guider la création de la collection.
Déduction du type cible pour les collections est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.
Qu’est-ce que le typage par la cible ?
Le typage par la cible signifie que le compilateur déduit ce qu’une expression de collection doit construire à partir du contexte où elle est utilisée, plutôt qu’à partir d’un type explicite indiqué à droite.
using System;
int[] numbers = [1, 2, 3]; // target type is int[]
Console.WriteLine(numbers.GetType().Name); // Int32[]La cible détermine le type
Le même littéral devient un type concret différent selon le type de la variable, du paramètre ou du retour auquel il est transmis.
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>); // TrueTypage par la cible dans les appels de méthode
Lorsqu’un paramètre de méthode est un type collection, le littéral passé en argument est typé par la cible correspondant à ce paramètre.
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>Typage par la cible dans les retours
Le corps d’une méthode peut retourner une expression de collection seule ; le type de retour déclaré fournit la cible.
using System;
using System.Collections.Generic;
static List<string> Tags() => ["csharp", "dotnet", "ranges"];
Console.WriteLine(Tags().Count); // 3Inférence du type des éléments
Le type des éléments provient de la cible. Si la cible est double[], les littéraux entiers sont automatiquement convertis vers double.
using System;
double[] values = [1, 2, 3]; // ints widen to double
Console.WriteLine(values[0] + 0.5); // 1.5Les interfaces comme cibles
Les expressions de collection peuvent cibler des interfaces telles que IEnumerable<T>, IReadOnlyList<T> ou ICollection<T> ; le compilateur choisit un type concret approprié.
using System;
using System.Collections.Generic;
IReadOnlyList<int> ro = [1, 2, 3];
Console.WriteLine(ro.Count); // 3Opérateur ternaire et typage par la cible
Les deux branches d’une conditionnelle peuvent être des expressions de collection, chacune étant typée par la cible correspondant au type de résultat commun.
using System;
bool useDefaults = false;
int[] config = useDefaults ? [0, 0, 0] : [1, 2, 3];
Console.WriteLine(string.Join(",", config)); // 1,2,3var n’est pas une cible
Vous ne pouvez pas écrire var x = [1, 2, 3];, car var ne fournit aucun type cible. Indiquez un type explicite ou utilisez l’expression là où un type est attendu.
using System;
// var x = [1, 2, 3]; // compile error: no target type
int[] x = [1, 2, 3]; // ok
Console.WriteLine(x.Length); // 3Typage par la cible avec des expansions
Le typage par la cible et les expansions fonctionnent ensemble : la cible détermine le type final de la collection, tandis que les expansions en fournissent le contenu.
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>); // TrueRéduire le bruit syntaxique
Le typage par la cible évite de répéter les noms de type. Comparez l’ancienne forme redondante avec la nouvelle, plus concise.
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); // TrueTout assembler
Ici, un seul utilitaire accepte n’importe quelle collection en lecture seule, et les appelants transmettent librement des littéraux typés par la cible.
using System;
using System.Collections.Generic;
static int Count(IReadOnlyCollection<int> c) => c.Count;
Console.WriteLine(Count([1, 2, 3, 4])); // 4Vérification rapide
Vérifiez votre maîtrise du typage par la cible.
Récapitulatif
Vous avez appris comment les expressions de collection sont typées par la cible.
- Le type de destination (variable, paramètre ou retour) détermine la construction.
- Les types des éléments peuvent être élargis pour correspondre à la cible.
- Les interfaces comme
IReadOnlyList<T>sont des cibles valides. varne peut pas être une cible.
Questions Fréquemment Posées
La leçon « Déduction du type cible pour les collections » est-elle gratuite ?
Oui — le texte complet de « Déduction du type cible pour les collections » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Déduction du type cible pour les collections » ?
Laissez le type cible guider la création de la collection. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Déduction du type cible pour les collections » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Syntaxe des expressions de collection
- L’élément de déploiement
- Déduction du type cible pour les collections
- Constructeurs de collections