0% encontró este documento útil (0 votos)
6 vistas3 páginas

Uso correcto de la instrucción using en C#

La instrucción 'using' en C# asegura la correcta gestión de instancias IDisposable, garantizando su eliminación al salir del bloque, incluso en caso de excepciones. También se puede utilizar 'await using' para instancias IAsyncDisposable y se permite declarar múltiples instancias en una sola instrucción. Se recomienda declarar variables descartables dentro de la instrucción 'using' para evitar excepciones relacionadas con el uso de instancias ya desechadas.

Cargado por

braianblanco2023
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas3 páginas

Uso correcto de la instrucción using en C#

La instrucción 'using' en C# asegura la correcta gestión de instancias IDisposable, garantizando su eliminación al salir del bloque, incluso en caso de excepciones. También se puede utilizar 'await using' para instancias IAsyncDisposable y se permite declarar múltiples instancias en una sola instrucción. Se recomienda declarar variables descartables dentro de la instrucción 'using' para evitar excepciones relacionadas con el uso de instancias ya desechadas.

Cargado por

braianblanco2023
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Instrucción using: asegúrese del uso

correcto de objetos descartables


Artículo • 20/03/2023

La instrucción using garantiza el uso correcto de una instancia IDisposable:

C#

var numbers = new List<int>();


using (StreamReader reader = [Link]("[Link]"))
{
string line;
while ((line = [Link]()) is not null)
{
if ([Link](line, out int number))
{
[Link](number);
}
}
}

Cuando el control sale del bloque de la instrucción using , se elimina una instancia
IDisposable adquirida. En concreto, la instrucción using garantiza que una instancia
descartable se elimine incluso si se produce una excepción dentro del bloque de la
instrucción using . En el ejemplo anterior, se cierra un archivo abierto después de
procesar todas las líneas.

Use la instrucción await using para usar correctamente una instancia IAsyncDisposable:

C#

await using (var resource = new AsyncDisposableExample())


{
// Use the resource
}

Para obtener más información sobre cómo usar las instancias IAsyncDisposable, vea la
sección Uso de la eliminación asincrónica del artículo Implementación de un método
DisposeAsync.

También puede usar una using declaración que no requiera llaves:

C#
static IEnumerable<int> LoadNumbers(string filePath)
{
using StreamReader reader = [Link](filePath);

var numbers = new List<int>();


string line;
while ((line = [Link]()) is not null)
{
if ([Link](line, out int number))
{
[Link](number);
}
}
return numbers;
}

Cuando se declara en una declaración using , una variable local se elimina al final del
ámbito en el que se declara. En el ejemplo anterior, la eliminación se produce al final de
un método.

Una variable declarada por la instrucción using o declaración es readonly. No se puede


reasignar ni pasar como parámetro ref o out.

Puede declarar varias instancias del mismo tipo en una instrucción using , tal como se
muestra en el ejemplo siguiente:

C#

using (StreamReader numbersFile = [Link]("[Link]"), wordsFile =


[Link]("[Link]"))
{
// Process both files
}

Cuando se declaran varias instancias en una instrucción using , se eliminan en orden


inverso al de declaración.

También puede usar la instrucción y la declaración using con una instancia de una
estructura ref que se ajuste al patrón descartable. Es decir, tiene una instancia o un
método Dispose de extensión, que es accesible, no tiene parámetros y tiene un tipo de
valor devuelto void .

La instrucción using también puede tener el siguiente formato:

C#
using (expression)
{
// ...
}

donde expression genera una instancia descartable. En el siguiente ejemplo se muestra


que:

C#

StreamReader reader = [Link](filePath);

using (reader)
{
// Process file content
}

2 Advertencia

En el ejemplo anterior, después de que el control salga de la instrucción using , una


instancia descartable permanece en el ámbito aunque ya está desechada. Si usa
más esa instancia, podría encontrar una excepción, por ejemplo,
ObjectDisposedException. Por eso se recomienda declarar una variable descartable
dentro de la instrucción using o con la declaración using .

Especificación del lenguaje C#


Para obtener más información, vea la sección Using de la especificación del lenguaje C#
y la nota de propuesta sobre "uso basado en patrones" y "uso de declaraciones".

Vea también
Referencia de C#
[Link]
[Link]
Uso de objetos que implementan IDisposable
Implementación de un método Dispose
Implementación de un método DisposeAsync
Uso de la instrucción "using" simple (regla de estilo IDE0063)
Directiva using

También podría gustarte