tutorial sintaxis remarks que mvc example español c# .net syntax using using-statement

sintaxis - remarks c#



¿Qué es el bloque de C#y por qué debería usarlo? (9)

Esta pregunta ya tiene una respuesta aquí:

¿Cuál es el propósito del bloque de uso en C #? ¿En qué se diferencia de una variable local?


Colocar el código en un bloque de uso garantiza que los objetos se eliminan (aunque no necesariamente se recolectan) tan pronto como el control abandona el bloque.


Desde MSDN:

C #, a través de .NET Framework Common Language Runtime (CLR), libera automáticamente la memoria utilizada para almacenar objetos que ya no son necesarios. El lanzamiento de la memoria no es determinista; la memoria se libera cada vez que el CLR decide realizar una recolección de basura. Sin embargo, generalmente es mejor liberar recursos limitados, como los manejadores de archivos y las conexiones de red lo más rápido posible.

La declaración de uso permite al programador especificar cuándo los objetos que usan recursos deberían liberarlos. El objeto proporcionado a la declaración de uso debe implementar la interfaz IDisposable. Esta interfaz proporciona el método Dispose, que debería liberar los recursos del objeto.

En otras palabras, la declaración de using le dice a .NET que libere el objeto especificado en el bloque de using una vez que ya no sea necesario.


En realidad, es solo un poco de azúcar sintética que no requiere que llame explícitamente a Disose sobre los miembros que implementan IDisposable.


La declaración de uso se utiliza para trabajar con un objeto en C # que implementa la interfaz IDisposable .

La interfaz IDisposable tiene un método público llamado Dispose que se usa para eliminar el objeto. Cuando usamos la declaración de uso, no necesitamos eliminar explícitamente el objeto en el código, la declaración de uso se encarga de ello.

using (SqlConnection conn = new SqlConnection()) { }

Cuando usamos el bloque anterior, internamente el código se genera así:

SqlConnection conn = new SqlConnection() try { } finally { // calls the dispose method of the conn object }

Para más detalles, lea: Entender la declaración de ''uso'' en C # .


La instrucción using obtiene uno o más recursos, ejecuta una instrucción y luego elimina el recurso.


Si el tipo implementa IDisposable, automáticamente lo desecha.

Dado:

public class SomeDisposableType : IDisposable { ...implmentation details... }

Estos son equivalentes:

SomeDisposableType t = new SomeDisposableType(); try { OperateOnType(t); } finally { if (t != null) { ((IDisposable)t).Dispose(); } }

using (SomeDisposableType u = new SomeDisposableType()) { OperateOnType(u); }

El segundo es más fácil de leer y mantener.


También tenga en cuenta que el objeto instanciado mediante el using es de solo lectura dentro del bloque que usa. Consulte la referencia oficial de C # here .


Using llamadas Dispose() después de que se haya dejado de using -block, incluso si el código lanza una excepción.

Por lo tanto, usas usualmente para clases que requieren limpieza después de ellas, como IO.

Por lo tanto, este bloque utilizando:

using (MyClass mine = new MyClass()) { mine.Action(); }

haría lo mismo que:

MyClass mine = new MyClass(); try { mine.Action(); } finally { if (mine != null) mine.Dispose(); }

El using es mucho más corto y más fácil de leer.


using (B a = new B()) { DoSomethingWith(a); }

es equivalente a

B a = new B(); try { DoSomethingWith(a); } finally { ((IDisposable)a).Dispose(); }