elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C#] ¿Cómo funciona Using()?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#] ¿Cómo funciona Using()?  (Leído 1,838 veces)
YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
[C#] ¿Cómo funciona Using()?
« en: 8 Septiembre 2015, 18:27 pm »

Buenas,

Estoy dudoso con el uso de using(){ } he leído referentemente (MSDN) algo de que se ejecuta dicho bloque y luego se elimina, pero no logro entenderlo a la perfección.

Estoy probando con esto:

Código
  1. Console.WriteLine("Vamos a ejecutar el using ok?");
  2.            string respuesta = Console.ReadLine();
  3.  
  4.            using(WebClient wc = new WebClient())
  5.            {
  6.                string laUrl = "http://foro.elhacker.net";
  7.                wc.BaseAddress = laUrl;
  8.                Console.WriteLine("Descargando: " + laUrl);
  9.                byte[] myDatabuffer = wc.DownloadData(laUrl);
  10.  
  11.  
  12.                string download = Encoding.ASCII.GetString(myDatabuffer);
  13.                Console.WriteLine(download);
  14.            }
  15.  
  16.            Console.WriteLine("\nTermino el programa");
  17.  
  18.  
  19.            Console.ReadKey();

Funciona correctamente, pero no logro entender en que casos debo o sería recomendable usarlo y como funciona.

Cualquier información adicional lo agradecería.


Saludos.


« Última modificación: 8 Septiembre 2015, 18:30 pm por YuseTist » En línea

Esta página web no está disponible - Google Chrome
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: [C#] ¿Cómo funciona Using()?
« Respuesta #1 en: 8 Septiembre 2015, 20:29 pm »

El using llama al método Dispose() al salir del bloque, lo que asegura que se liberarán recursos al finalizar el bloque.

Pero bueno, no digo nada que no ponga en MSDN.

Puedes utilizarlo con clases que hereden de IDisposable.


En línea

YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
Re: [C#] ¿Cómo funciona Using()?
« Respuesta #2 en: 8 Septiembre 2015, 20:39 pm »

El using llama al método Dispose() al salir del bloque, lo que asegura que se liberarán recursos al finalizar el bloque.

¿Esto que significa realmente?
¿Qué se ejecuta el using y luego termina y se ejecuta el siguiente bloque (código) no?

Saludos.
En línea

Esta página web no está disponible - Google Chrome
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: [C#] ¿Cómo funciona Using()?
« Respuesta #3 en: 8 Septiembre 2015, 22:16 pm »

Si has programado C++, conocerás los bloques de llaves {}. En estos bloques, las variables que se declaran dentro, "desaparecen" al salir del contexto del bloque.
Las variables declaradas dentro de los paréntesis de using (que serán variables que heredan de IDisposable) tienen asegurado que se llamará a su método Dispose().

Para más información, mira la intefraz IDisposable y el método Dispose, así como su utilidad en elementos del lenguaje C#.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.708



Ver Perfil
Re: [C#] ¿Cómo funciona Using()?
« Respuesta #4 en: 9 Septiembre 2015, 00:13 am »

Para entender la finalidad de la declaración using, el método Dispose / Finalize / Close o la interfáz IDisposable tal vez deberías empezar por el principio, por entender cómo se administran los recursos y cómo se liberan los "residuos".

Lee acerca del recolector de basura de .Net aka GarbageCollector (GC).

Fundamentals of Garbage Collection - MSDN
Garbage Collection - MSDN
Garbage Collector Basics and Performance Hints - MSDN
+
Dispose Pattern - MSDN

Pero un resumen rápido sería más o menos cómo lo que ya han mencionado, cuando finaliza el bloque del using automáticamente se llama al método Dispose el cual se encarga de liberar los recursos utilizados por la instancia del objeto idisposable en cuestión.

Hay que tener en cuenta que la finalidad de algunos miembros simplemente existen para simplificar la escritura de código y conseguir una estructura mejor, pero por cuestión de estética más que nada, cómo lo es el caso de using o cómo lo es también la función Enumerable.AsEnumerable por poner otro ejemplo, simplemente son cosas opcionales que proporcionan un mejor rendimiento o mejor experiencia de cara al usuario, pero que realmente no son estrictamente necesarias de utilizar.

Saludos
« Última modificación: 9 Septiembre 2015, 00:33 am por Eleкtro » En línea


YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
Re: [C#] ¿Cómo funciona Using()?
« Respuesta #5 en: 9 Septiembre 2015, 19:02 pm »

Gracias por las respuestas.
Me fueron muy útiles, me leí MSDN y ahora entiendo lo de IDiposable, etc..

Saludos.
En línea

Esta página web no está disponible - Google Chrome
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines