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
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.
Java nasıl insan okunabilir biçime bay...
C boolean boyutu ne#? Gerçekten 4-bayt...
Bir bayt için herhangi bir nesne[]dönü...
1.25 m * geçirmeden C, boyutu operatör...
KB, MB, bayt cinsinden boyutu dönüştür...