Jaki jest odpowiednik tego w IronPython? Czy to tylko blok try-finally?Co to jest odpowiednik bloku C# "using" w IronPython?
using (var something = new ClassThatImplementsIDisposable())
{
// stuff happens here
}
Jaki jest odpowiednik tego w IronPython? Czy to tylko blok try-finally?Co to jest odpowiednik bloku C# "using" w IronPython?
using (var something = new ClassThatImplementsIDisposable())
{
// stuff happens here
}
IronPython obsługującego użyciu IDisposable
z with
oświadczenie, więc można napisać coś takiego:
with ClassThatImplementsIDisposable() as something:
pass
Dobra opcja dla własnych typów, ale nie działa dla typów ram. –
Jakiś szczególny powód, dla którego nie działa z typami ramowymi? –
Jesteś pewien? Po prostu próbowałem z 'StreamWriter' i wydaje się działać zgodnie z oczekiwaniami. –
IronPython (jako kandydatów 2,6 uwalnianiu) umożliwia stwierdzenie with
, który owija się IDisposable obiektu w sposób podobny do stosowania.
bloku Using jest w rzeczywistości następujące pod maską:
try {
(do something unmanaged here)
}
finally {
unmanagedObject.Dispose();
}
nadzieję, że to pomoże Ci zrozumieć logikę w użyciu instrukcji.
Jest oświadczenie with
: http://www.ironpythoninaction.com/magic-methods.html#context-managers-and-the-with-statement
with open(filename) as handle:
data = handle.read()
...
Nie. Instrukcja "with" działa tylko z blokowanymi obiektami, do których należą obiekty plików kategorii. Działa to * nie * działa z dowolnymi typami, na przykład liczbami całkowitymi. – Teddy
With statement. Na przykład:
with open("/temp/abc") as f:
lines = f.readlines()
To nie obsługuje IDisposable po wyjęciu z pudełka. Działa z typami Pythona z podaną procedurą __exit__. –
Dodajmy uprawnienia do tego wątku: http://lists.ironpython.com/ pipermail/users-ironpython.com/2008-July/007826.html –
Nie widzę niczego, co jest istotne dla tego pytania. –