Что эквивалентно блоку «using» в C # в IronPython? - PullRequest
16 голосов
/ 18 ноября 2009

Что эквивалентно этому в IronPython? Это просто блок try-finally?

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

Ответы [ 5 ]

27 голосов
/ 18 ноября 2009

IronPython поддерживает использование IDisposable с оператором with, поэтому вы можете написать что-то вроде этого:

with ClassThatImplementsIDisposable() as something:
    pass
6 голосов
/ 18 ноября 2009

IronPython (по состоянию на версии 2.6 кандидатов) поддерживает оператор with, который оборачивает объект IDisposable способом, аналогичным использованию.

4 голосов
/ 18 ноября 2009

С выпиской . Например:

with open("/temp/abc") as f:
    lines = f.readlines()
2 голосов
/ 18 ноября 2009

Есть оператор with: http://www.ironpythoninaction.com/magic-methods.html#context-managers-and-the-with-statement

with open(filename) as handle:
    data = handle.read()
    ...
0 голосов
/ 18 ноября 2009

блок использования на самом деле следующий под капотом:

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

Надеюсь, что это поможет вам понять логику использования оператора.

...