2009-11-18 22 views
14

IronPython'da buna eşdeğer nedir? Sadece deneme bir blok mu? (2.6 salma adayları olarak)IronPython'da C# "using" bloğunun karşılığı nedir?

using (var something = new ClassThatImplementsIDisposable()) 
{ 
    // stuff happens here 
} 
+0

en bu konuya otoritemizle ilave edelim: http://lists.ironpython.com/ Örneğin pipermail/users-ironpython.com/2008-Temmuz/007826.html –

+1

Bu soruyla alakalı bir şey göremiyorum. –

cevap

25

IronPython with ifadesiyle IDisposable kullanarak destekler, böylece böyle bir şey yazabilirsiniz:

with ClassThatImplementsIDisposable() as something: 
    pass 
+0

Kendi türleriniz için iyi bir seçenek, ancak çerçeve türleri için çalışmıyor. –

+0

Çerçeve türleri ile çalışmadığının belirli bir nedeni var mı? –

+1

Emin misin? Sadece StreamWriter ile denedim ve beklendiği gibi çalışıyor gibi görünüyor. –

6

IronPython şekilde kullanılarak benzer bir ıdisposable nesne kaydırılır with deyimi, destekler. Bu kullandığınız deyimi arkasındaki mantık anlamamıza yardımcı olur

try { 
    (do something unmanaged here) 
} 
finally { 
    unmanagedObject.Dispose(); 
} 

Hope:

+0

Sadece merak ediyorum - neden düşüşler? Bildiğim kadarıyla, bu bir dil olarak doğru-dil, bunu dile dahil etmiyor. –

+2

-1 Python bunu içerir, 'with' ifadesidir. – Javier

+0

@Javier Badi: Bunu kullanmayı denedikten sonra tekrar söyle. – Teddy

0

kullanarak blok kaputun altında aşağıdaki aslında.

4

With statement.

with open("/temp/abc") as f: 
    lines = f.readlines() 
+0

Bu, kutunun dışında tanımlanabilir değildir. Belirtilen bir __exit__ rutini ile python türleri ile çalışır. –

İlgili konular