Python ha una bella parola chiave dal 2.6 chiamata con. C'è qualcosa di simile in C#?C'è qualcosa come Python con 'in' in C#?
9
A
risposta
23
L'equivalente è la dichiarazione using
Un esempio sarebbe
using (var reader = new StreamReader(path))
{
DoSomethingWith(reader);
}
La restrizione è che il tipo di variabile scope dalla clausola utilizzando deve implementare IDisposable
ed è il suo metodo Dispose()
che ottiene chiamato all'uscita dal blocco di codice associato.
5
C# presenta la dichiarazione using
, come detto in un'altra risposta e documentato qui:
Tuttavia, è non equivale-with
dichiarazione di Python, in quanto non v'è alcuna analogico del metodo __enter__
.
In C#:
using (var foo = new Foo()) {
// ...
// foo.Dispose() is called on exiting the block
}
In Python:
with Foo() as foo:
# foo.__enter__() called on entering the block
# ...
# foo.__exit__() called on exiting the block
Maggiori informazioni sul with
dichiarazione qui: