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

  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • NewsyTech

    NewsyTech

    2 AĞUSTOS 2010
  • spectragirlz16's channel

    spectragirlz

    22 Ocak 2012