SORU
14 Temmuz 2009, Salı


Boyutu c bayt nesne örneği bul#

Rasgele bir örnek (farklı obje koleksiyonları, kompozisyonlar, tek bir nesne, vb.)

Nasıl bayt cinsinden boyutunu belirlemek miyim?

(Şu anda çeşitli nesnelerin bir koleksiyonu var ve bu toplanan boyutunu belirlemek için çalışıyorum)

EDİT: bu Nesne için bir uzantısı yöntemi yazılı birisi Var mı? Çok zarif ımo olurdu.

CEVAP
14 Temmuz 2009, Salı


Kesinlikle çirkin, belgesiz kesmek aleminde ne takip eden. her şeyden önce, bir uyarı: Eğer sizin için işe yarayıp yaramadığını Şimdi bile bu çalışma güvenmeyin - yarın çalışma, herhangi bir küçük veya büyük vermeyebilir .NET güncelleştirin.

this article on CLR internals - geçen ben, hala geçerli olduğunu kontrol bilgileri kullanabilirsiniz. İşte bu (iç "Temel Örnek Boyutu" tipi TypeHandle yoluyla alan). alır nasıl yapıldığını.

object obj = new List<int>(); // whatever you want to get the size of
RuntimeTypeHandle th = obj.GetType().TypeHandle;
int size = *(*(int**)&th   1);
Console.WriteLine(size);

Bu 3.5 SP1 32-bit üzerinde çalışıyor. Eğer alan boyutları 64-bit aynı olup olmadığından emin değilim - eğer onlar değilse türleri ve/veya farklarını ayarlamak gerekebilir.

Bu " iş "normal" tüm örneklerini aynı tür,, iyi tanımlanmış bir tür. Bu doğru değil o kesin diziler ve dizeleri ve ayrıca 3* *inanıyorum. Onlar için temel örnek büyüklüğü için bulunan öğelerin boyutunu eklemek gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C#

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dope2111

    dope2111

    29 HAZİRAN 2009
  • SDSARG3

    SDSARG3

    14 Mart 2009
  • Music EuroDance 2

    Music EuroDa

    12 Mayıs 2011