2009-11-18 21 views
14

Tương đương với điều này trong IronPython là gì? Nó chỉ là một khối thử cuối cùng?Tương đương với khối C# "đang sử dụng" trong IronPython là gì?

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

Hãy thêm một số thẩm quyền để chủ đề này: http://lists.ironpython.com/ pipermail/users-ironpython.com/2008-July/007826.html –

+1

Tôi không thấy bất kỳ điều gì có liên quan đến câu hỏi này. –

Trả lời

25

IronPython hỗ trợ sử dụng IDisposable với with tuyên bố, do đó bạn có thể viết một cái gì đó như thế này:

with ClassThatImplementsIDisposable() as something: 
    pass 
+0

Tùy chọn tốt cho các loại của riêng bạn, nhưng không hoạt động đối với các loại khung công tác. –

+0

Bất kỳ lý do cụ thể nào tại sao nó không hoạt động với các loại khung công tác? –

+1

Bạn có chắc chắn không? Tôi chỉ thử với 'StreamWriter' và nó có vẻ hoạt động như mong đợi. –

6

IronPython (như những ứng cử viên 2,6 phát hành) hỗ trợ tuyên bố with, mà kết thúc tốt đẹp một đối tượng IDisposable trong một cách tương tự để sử dụng.

+0

Chỉ cần tò mò - tại sao các downvotes? Theo như tôi biết, điều này đúng là python, như một ngôn ngữ, không bao gồm điều này trong ngôn ngữ. –

+2

-1 Python không bao gồm điều này, đó là câu lệnh 'with'. – Javier

+0

@Javier Badi: Hãy nói lại sau khi bạn đã thử sử dụng nó. – Teddy

0

khối sử dụng là trên thực tế sau đây dưới mui xe:

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

Hy vọng điều này sẽ giúp bạn hiểu được logic đằng sau báo cáo kết quả sử dụng.

4

With statement. Ví dụ:

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

Điều này không hỗ trợ IDisposable ra khỏi hộp. Nó hoạt động với các kiểu python với một thường trình __exit__ được chỉ định. –

Các vấn đề liên quan