Maison > développement back-end > C++ > Comment les tableaux C# implémentent-ils apparemment IList sans propriété de comptage explicite ?

Comment les tableaux C# implémentent-ils apparemment IList sans propriété de comptage explicite ?

Susan Sarandon
Libérer: 2025-01-05 09:30:39
original
387 Les gens l'ont consulté

How Do C# Arrays Seemingly Implement IList Without an Explicit Count Property?

Comment les tableaux implémentent partiellement IList, malgré la propriété Count manquante

En C#, les tableaux implémentent IList, pourtant ils il manque la propriété Count explicitement déclarée dans l’interface. Cela a soulevé des questions quant à savoir si ce comportement constitue une violation des règles d'implémentation de l'interface ou simplement un malentendu.

Plonger dans le framework

Alors que les tableaux n'implémentent pas IList interface. Cependant, une implémentation directe n'existe pas.

Approche Quacks-Like-a-Duck du CLR

Le CLR implémente des techniques spéciales pour les tableaux, similaires à celles utilisées pour la valeur genres. Le compilateur reconnaît les transtypages vers IList et demande au CLR de l'implémenter via l'objet tableau sous-jacent. Le CLR délègue ensuite l'exécution à la classe cachée System.SZArrayHelper, qui implémente les interfaces nécessaires.

Implémentation de la propriété Count

Bien qu'elle n'ait pas été explicitement déclarée, la propriété Count peut être accessible. Cependant, il est implémenté comme suit :

internal int get_Count<T>() {
    // Warning: "this" is an array, not an SZArrayHelper
    T[] _this = JitHelpers.UnsafeCast<T[]>(this);
    return _this.Length;
}
Copier après la connexion

Comme le commentaire le suggère, ce comportement peut être considéré comme une violation des règles, mais il facilite une gestion efficace des tableaux.

Conclusion

Les tableaux implémentent partiellement IList grâce à l'approche charlatane du CLR. Bien que la propriété Count ne soit pas explicitement définie, elle est implémentée en interne par le CLR, permettant une intégration transparente entre les tableaux et les collections génériques.

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