La différence entre Cast() et OfType() dans LINQ : compréhension approfondie
Dans LINQ, lorsque vous travaillez avec des collections pouvant contenir des éléments de différents types, vous devrez peut-être convertir l'intégralité de la collection en un type spécifique. LINQ propose deux méthodes à cet effet : Cast() et OfType().
Méthode Cast()
Cast() tente de convertir tous les éléments de la collection vers le type spécifié. Si un élément ne peut pas être converti avec succès, une InvalidCastException est levée. Cette méthode est utile lorsque vous êtes sûr que tous les éléments de la collection peuvent être convertis dans le type requis.
Méthode OfType()
Contrairement à Cast(), OfType() renvoie uniquement les éléments de la collection qui peuvent être convertis en toute sécurité vers le type spécifié. Il n'essaie pas de convertir tous les éléments, donc aucune exception n'est levée. Cette méthode est utile lorsque vous souhaitez filtrer uniquement les éléments pouvant être convertis.
Exemple d'utilisation
Considérez le code suivant :
<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
Si vous essayez d'utiliser Cast() pour convertir ce tableau en une collection de chaînes, vous recevrez une InvalidCastException car l'un des éléments est un entier.
<code class="language-csharp">IEnumerable<string> someCollection = objs.Cast<string>();</code>
Cependant, si vous utilisez OfType(), il ne renverra que les éléments qui peuvent être convertis en toute sécurité en chaîne.
<code class="language-csharp">IEnumerable<string> someCollection = objs.OfType<string>();</code>
Dans ce cas, someCollection ne contiendra qu'un seul élément : "12345".
Résumé
Cast() et OfType() sont deux méthodes LINQ qui servent à des fins différentes lorsque vous travaillez avec des collections de types mixtes. Cast() tente de convertir tous les éléments, tandis que OfType() sélectionne uniquement les éléments dont la conversion est sûre. Utilisez Cast() lorsque vous êtes sûr du transtypage ; utilisez OfType() lorsque vous souhaitez simplement filtrer les éléments valides.
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!