by Valeriano Tortola
  12. julio 2008 00:41
  
  
La interfaz IDisposable nos provee del método .Dispose() que utilizamos para liberar los recursos que esta usando ese objeto, pero dicho método... no deja de ser un simple método ;) Solo hace falta hacer una pequeña prueba para darse cuenta:
 
   1:  class Program
   2:  {
   3:      static void Main(string[] args)
   4:      {
   5:          Desechable test = new Desechable();
   6:            
   7:          test.Dispose();
   8:   
   9:          Console.WriteLine(test.Cadena??"Muerto"); // Muestra: Vivo!
  10:          Console.ReadKey(true);
  11:      }
  12:  }
  13:   
  14:  class Desechable : IDisposable
  15:  {
  16:      public String Cadena = "Vivo!";
  17:   
  18:      public void Dispose()
  19:      {
  20:   
  21:      }
  22:  }
 
Ok ok... un poco más complejo:
Mas...
 
  
  by Valeriano Tortola
  24. octubre 2007 00:54
  
  
Siguiendo con el el artículo anterior de la memoria en .NET donde explicaba como esta estructurada, sigo con las variables, que en .NET principalmente son de dos tipos:
	
		
			| Tipo (alias) | Bytes | Rango | 
		
			| Char (char) | 2 | Caracteres | 
		
			| Bolean (bool) | 4 | True ó False | 
		
			| IntPtr | ? | Puntero nativo | 
		
			| DateTime (date) | 8 | 1/1/0001 12:00:00 AM a 12/31/9999 11:59:59 PM | 
		
			| SByte (sbyte) | 1 | -128 a 127 | 
		
			| Byte (byte) | 1 | 0 a 255 | 
		
			| Int16 (short) | 2 | -32768 a 32767 | 
		
			| Int32 (int) | 4 | -2147483648 a 2147483647 | 
		
			| UInt32 (uint) | 4 | 0 a 4294967295 | 
		
			| Int64 (long) | 8 | -9223372036854775808 a 9223372036854775807 | 
		
			| Single (float) | 4 | -3.402823E+38 a 3.402823E+38 | 
		
			| Double (double) | 8 | -1.79769313486232E+308 a 1.79769313486232E+308 | 
		
			| Decimal (decimal) | 16 | -79228162514264337593543950335 a 79228162514264337593543950335 | 
	
	-  
	
		- Se conoce su tamaño antes de su inicialización, el más grande tiene 16 Bytes. 
- Heredan de System.ValueType y ninguno puede ser extendido (sealed)(ni siquiera ValueType). 
- Se almacenan en el thread stack cuando son variables locales y expresiones intermedias, y en el managed heap en el resto de situaciones (variables globales ó/y estáticas). 
- Las estructuras (struct) y enumeraciones (enum) son tipos por valor también y responden al mismo comportamiento. 
- La memoria ocupada por estos tipos se elimina en cuanto están fuera de ámbito en caso de estar en el thread stack, y por medio del GC cuando estan en el managed heap (desapareciendo junto con la clase a la que está asociada). 
 
 Mas...
 
  
  by Valeriano Tortola
  22. octubre 2007 05:05
  
  
Con este, quiero empezar una serie de pequeños artículos sobre como esta estructurada la memoria en .NET, sin profundizar en demasiados detalles... pero empezar por lo más simple y acabar hablando sobre temas de sincronización, atomicidad y volaticidad pasando por el GarbageCollector, intentando aportar una información que a mi parecer, todo desarrollador debería tener en mente a la hora de programar... y que se debe conocer en profundidad para desarrollar aplicaciones multithreading. Espero que sea útil para quien lo lea y personalmente me ayude a comprenderlo mejor.
 
La memoria de la que hacen uso nuestras aplicaciones administradas se divide en dos partes principalmente:
 
Mas...