2009-07-25 18 views

Respuesta

23

El equivalente es la declaración using

Un ejemplo sería

using (var reader = new StreamReader(path)) 
    { 
    DoSomethingWith(reader); 
    } 

La restricción es que el tipo de la variable de ámbito por la cláusula utilizando debe implementar IDisposable y es su Dispose() método que consigue llamado a salir del bloque de código asociado.

5

C# tiene la declaración using, como se ha mencionado en otra respuesta y documentado aquí:

Sin embargo, es no es equivalente-with declaración de Python, en la que no hay analógico del método __enter__.

En C#:

using (var foo = new Foo()) { 

    // ... 

    // foo.Dispose() is called on exiting the block 
} 

En Python:

with Foo() as foo: 
    # foo.__enter__() called on entering the block 

    # ... 

    # foo.__exit__() called on exiting the block 

Más sobre la declaración with aquí: