Maison >développement back-end >C++ >Comment puis-je estimer la taille en octets des objets C# ?
Question :
Déterminer la taille de toute instance d'objet (y compris les collections, les combinaisons et les objets individuels) est une tâche courante lors de la gestion de la taille des objets.
Solution :
Bien qu'il n'existe pas de méthode officielle, vous pouvez tirer parti de la réflexion et des composants internes non documentés de .NET pour estimer la taille 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>
Explication :
RuntimeTypeHandle
Donne accès à la représentation interne d'un type. Limitations :
StringBuilder
). Méthodes d'extension :
Pour plus de commodité, vous pouvez envisager d'implémenter une méthode d'extension sur la classe Object
pour simplifier la récupération de la taille :
<code class="language-csharp">public static int GetEstimatedByteSize(this object obj) { RuntimeTypeHandle th = obj.GetType().TypeHandle; return *(*(int**) &th + 1); }</code>
Veuillez noter que cette méthode d'extension doit être utilisée avec prudence et n'est pas garantie comme étant précise pour tous les types et scénarios.
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!