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

  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • SVB International

    SVB Internat

    29 EKİM 2011
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008