Comment les éléments sont-ils stockés dans des conteneurs dans .Net? Par exemple, un vecteur C++ stocke dans un ordre séquentiel, contrairement à List.
Comment sont-ils implémentés pour les conteneurs .Net (Array, ArrayList, ...)?
Merci.Comment les éléments sont-ils stockés dans des conteneurs dans .Net?
Répondre
Cela dépend de l'élément. Mais un Vector
C++ est équivalent à un C# List
, et un List<T>
C++ est équivalent à un C# LinkedList
Le C# ArrayList
est à peu près, un C# List<object>
Wikipedia liste many data structures, et je vous suggère de jeter un coup d'oeil là, pour voir comment les différents sont mis en œuvre.
Alors:
C++ C# How
Vector ArrayList/List Array (sequential)
List LinkedList Linked List (non-sequential, i.e. linked)
Merci, exactement ce que je ne veux pas –
Cela varie en fonction du conteneur. Étant donné que l'implémentation est propriétaire, il n'existe aucune spécification publique imposant la structure de données sous-jacente doit être.
Si vous êtes intéressé à prendre le temps, je l'ai utilisé les outils suivants avant de comprendre comment MS a mis en œuvre cette classe ou que:
- Debugging avec les symboles de débogage Microsoft .NET Framework.
- Inspection des assemblages avec réflecteur.
Dans .net, des conteneurs (même les tableaux) gérer tous accès. Vous n'utilisez pas de pointeurs pour travailler avec eux (sauf dans des cas extrêmement rares dans lesquels vous n'allez probablement jamais entrer), donc peu importe comment ils stockent les informations. Dans de nombreux cas, il n'est même pas spécifié comment les choses fonctionnent dans les coulisses, donc l'implémentation peut être changée en quelque chose de «meilleur» sans casser des trucs qui reposent sur ces détails pour une raison stupide. Enfin, les tableaux stockent leurs entrées de manière séquentielle - avec la remarque que pour les objets de type référence (tout ce qui n'est pas une structure), "entrées" sont les références par opposition aux objets eux-mêmes. Les données pourraient être n'importe où dans la mémoire. Pensez-y plutôt à un tableau de références qu'à un tableau d'objets. ArrayLists, étant basé sur des tableaux, devrait stocker leurs affaires de la même manière.
- 1. "Dictionnaire" avec clé dans le cadre des éléments stockés?
- 2. jQuery UI mettre des éléments dans d'autres conteneurs
- 3. stack.ToList() dans .NET - ordre des éléments?
- 4. Iterator pour tous les éléments des mappages de hachage stockés dans un tableau
- 5. Débogage des conteneurs STL C++ dans Windbg
- 6. AppEngine: Les éléments stockés dans un StringListProperty resteront-ils toujours dans le même ordre?
- 7. Ordre de destruction des éléments de conteneurs STL
- 8. Transférer la propriété dans les conteneurs STL?
- 9. Code multithread dans les processus stockés CLR?
- 10. conteneurs génériques dans Delphi
- 11. Comment implémenter des conteneurs de tabulation dans une application Web?
- 12. swap ou déplacer des éléments DOM avec jQuery dans différents conteneurs
- 13. Comment libérer des objets stockés dans un tableau?
- 14. Comment supprimer des éléments dans DevExpress LookupEdit
- 15. WPF, animer sur les limites des conteneurs
- 16. Débogage des conteneurs TBB d'Intel
- 17. Comment les conteneurs stl sont-ils supprimés?
- 18. Comment modifier les données EXIF dans .NET
- 19. Comment imprimer les cookies stockés par Mechanized?
- 20. Documents stockés dans la table SQL
- 21. Puis-je utiliser des objets MFC dans des conteneurs STL?
- 22. étendue des objets stockés dans la classe de registre php
- 23. Liste des types non stockés dans DatoStore dans AppEngine?
- 24. Comment les conteneurs STL copient-ils des objets?
- 25. Les utilisateurs anonymes ASP .NET ne sont pas stockés dans la base de données
- 26. différences entre les conteneurs IoC
- 27. Détermination de nouveaux éléments RSS dans .Net
- 28. jQuery liens profonds et chargement ajax dans plusieurs conteneurs (conteneurs) sous
- 29. Utilisation de collections/conteneurs/catalogues dans les modèles de domaine
- 30. .NET Compact Framework - texte multiligne dans les éléments
duple possible: http://stackoverflow.com/questions/487202/memory-layout-of-a-net-array –
Presque, mais il n'y a que pour le tableau, mais j'ai besoin de tous les conteneurs. –