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

Cast() vs OfType() dans LINQ : quand dois-je utiliser chacun pour la conversion de type ?

Barbara Streisand
Libérer: 2025-01-17 04:46:08
original
219 Les gens l'ont consulté

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

Conversion de type dans LINQ : explication détaillée des méthodes Cast() et OfType()

LINQ (Language Integrated Query) est un outil puissant du framework .NET qui permet aux développeurs d'interroger et de transformer des données en utilisant une syntaxe familière. Lorsque vous devez convertir des éléments d'ArrayList en IEnumerable, il existe deux méthodes principales : Cast() et OfType().

Méthode Cast()

La méthode Cast() est utilisée pour convertir explicitement tous les éléments de ArrayList vers le type spécifié. Il tente de convertir chaque élément en type cible, quel que soit son type réel. Si un élément ne parvient pas à être converti, une InvalidCastException est levée.

Méthode OfType()

La méthode

OfType() convertit sélectivement uniquement les éléments qui peuvent être convertis en toute sécurité vers le type cible. Il renvoie un IEnumerable contenant uniquement les éléments correspondant au type spécifié. Tous les éléments qui ne peuvent pas être convertis seront exclus du jeu de résultats.

Scénarios applicables aux méthodes Cast() et OfType()

Le choix de Cast() ou OfType() dépend de vos besoins spécifiques :

  • Utilisation de Cast() :

    • Vous êtes sûr que tous les éléments de l'ArrayList peuvent être convertis avec succès en type cible.
    • Vous souhaitez traiter chaque élément comme le type cible, même si son type réel est différent.
  • Utilisation de OfType() :

    • Vous vous attendez à ce que certains éléments de l'ArrayList ne puissent pas être convertis en type cible.
    • Vous souhaitez uniquement traiter des éléments qui peuvent être convertis en toute sécurité.

Exemple

Supposons que vous ayez une ArrayList contenant des chaînes et des entiers :

<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
Copier après la connexion
  • Utiliser Cast() :

    <code class="language-csharp">  try
      {
          string[] strArr = objs.Cast<string>().ToArray();
      }
      catch (InvalidCastException)
      {
          // 处理异常
      }</code>
    Copier après la connexion

    Dans ce cas, Cast() tentera de convertir les deux éléments en chaînes. Puisque l’un d’eux est un entier, une InvalidCastException est levée.

  • Utiliser OfType() :

    <code class="language-csharp">  string[] strArr = objs.OfType<string>().ToArray(); // 只包含 "12345"</code>
    Copier après la connexion

    OfType() récupérera avec succès les éléments de chaîne de ArrayList et exclura les éléments entiers.

En comprenant la différence entre Cast() et OfType(), vous pouvez convertir efficacement les types et filtrer les données lorsque vous utilisez LINQ, garantissant ainsi l'exactitude et la fiabilité des requêtes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal