Comment les tableaux en C# implémentent partiellement IList
Malgré la déclaration publique de la propriété Count de IList, les tableaux en C# peut être envisagée pour mettre en œuvre partiellement le
Détails d'implémentation
Bien que les tableaux n'implémentent pas directement IList, le Common Language Runtime (CLR) crée un type de tableau concret qui implémente effectivement l'interface interface. Cependant, cette implémentation n'est pas apparente par les moyens traditionnels.
Plus précisément, le CLR utilise une classe définie par le système appelée System.SZArrayHelper pour fournir l'implémentation sous-jacente de IList pour les tableaux. Cette implémentation inclut la propriété Count, qui délègue en interne à la propriété Longueur du tableau.
Exemple d'utilisation
Pour convertir un tableau en IList, le Le compilateur génère du code IL qui effectue une conversion à l'aide de l'instruction castclass. Le CLR utilise ensuite la classe SZArrayHelper pour fournir l'implémentation de l'interface.
Limitations
L'implémentation partielle de IList par tableaux comporte certaines limitations. Par exemple, si vous tentez d'invoquer la méthode GetInterfaceMap sur un type de tableau avec le paramètre d'interface défini sur IList entraînera une exception « Interface non trouvée ».
Implications
La mise en œuvre de IList par des tableaux via SZArrayHelper est un cas de typage à la manière d'un canard, où le CLR donne l'illusion que le tableau implémente l'interface même s'il ne le fait pas explicitement. Cela permet aux tableaux d'être utilisés comme IList objets sans nécessiter un adaptateur personnalisé.
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!