Explorer la taille en octets des objets C#
En C#, il n'est pas facile de déterminer avec précision la taille en octets d'une instance d'objet. Les objets peuvent contenir diverses collections, combinaisons et entités individuelles, ce qui rend difficile la mesure précise de leur taille.
Déterminer la taille de l'objet
Bien qu'il n'existe pas d'API publique, il existe un moyen efficace de déterminer la taille en octets d'un objet :
<code class="language-csharp">object obj = new List<int>(); RuntimeTypeHandle th = obj.GetType().TypeHandle; int size = *(*(int**)&th + 1); Console.WriteLine(size);</code>
Ce code utilise le type de l'objet TypeHandle
pour obtenir le champ interne "Base Instance Size". Notez que cette méthode n’est pas documentée et peut être obsolète dans une future mise à jour .NET.
Facteurs à considérer
Cette méthode fonctionne sur des objets "normaux" qui ont des instances du même type bien défini. Cependant, il ne peut pas mesurer avec précision la taille des objets tels que les tableaux, les chaînes et les StringBuilders, car leur taille dépend du nombre d'éléments qu'ils contiennent. Pour ces objets, la taille des éléments qui les contiennent doit être ajoutée à la taille de leur instance de base.
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!