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
}
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
}
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
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. –
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? –
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. –
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.
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.
Có báo cáo kết quả with
: http://www.ironpythoninaction.com/magic-methods.html#context-managers-and-the-with-statement
with open(filename) as handle:
data = handle.read()
...
Không. Câu lệnh "with" chỉ hoạt động với các đối tượng có thể khóa, mà đối tượng tệp danh mục chỉ xảy ra thuộc về. Nó không * không * làm việc với các loại tùy ý, nói, số nguyên. – Teddy
With statement. Ví dụ:
with open("/temp/abc") as f:
lines = f.readlines()
Đ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. –
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 –
Tôi không thấy bất kỳ điều gì có liên quan đến câu hỏi này. –