Maison >développement back-end >C++ >Comment puis-je déterminer la taille en octets des objets C# ?

Comment puis-je déterminer la taille en octets des objets C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-10 15:56:41460parcourir

How Can I Determine the Byte Size of C# Objects?

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!

Déclaration:
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