Maison >développement back-end >C++ >Cast() vs OfType() dans LINQ : quand dois-je utiliser chacun ?

Cast() vs OfType() dans LINQ : quand dois-je utiliser chacun ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-17 04:41:12887parcourir

Cast() vs. OfType() in LINQ: When Should I Use Each?

Choisir entre Cast() et OfType() dans Linq

Dans le domaine de LINQ, la conversion de types d'un ArrayList vers un IEnumerable peut être accompli avec deux méthodes : Cast() et OfType(). Comprendre leurs nuances est crucial pour sélectionner l'approche appropriée pour différents scénarios.

Cast() tente de convertir chaque élément de l'ArrayList comme s'il était du type spécifié. Tous les éléments qui ne peuvent pas être convertis avec succès entraîneront la levée d'une exception InvalidCastException.

OfType(), en revanche, renvoie uniquement les éléments qui peuvent être convertis en toute sécurité vers le type spécifié. Il ignore tous les éléments qui ne peuvent pas être convertis, filtrant efficacement l'ArrayList pour inclure uniquement les éléments du type souhaité.

Quand utiliser chaque méthode

  • Utilisez Cast() lorsque : Vous souhaitez imposer un type spécifique sur tous les éléments de l'ArrayList, même si cela signifie exclure les éléments qui ne peuvent pas être cast.
  • Utilisez OfType() lorsque : Vous souhaitez conserver la ArrayList d'origine et travailler uniquement avec des éléments qui peuvent être convertis en toute sécurité vers le type spécifié.

Exemple illustratif

Considérez ce qui suit ArrayList :

object[] objs = new object[] { "12345", 12 };
  • objs.Cast().ToArray(); lèvera une InvalidCastException car le deuxième élément ne peut pas être converti en chaîne.
  • objs.OfType().ToArray(); renverra { "12345" }, car seul le premier élément peut être converti en chaîne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn