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

  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010
  • THELIFEOFPRICE

    THELIFEOFPRI

    16 Mart 2011
  • Triune Films

    Triune Films

    9 ŞUBAT 2006