Выход из блока using через return. Произойдет ли Dispose()? - C#
Формулировка задачи:
Такой код:
Оператор return сейчас размещен внутри блока using класса MemoryStream. Будет ли вызван Dispose() при выходе из метода?
static class StringExtension
{
public static string GZipCompress(this string s)
{
var encoding = new UTF8Encoding();
using (var memoryStream = new MemoryStream())
{
using (var compressionStream = new GZipStream(memoryStream, CompressionMode.Compress))
{
byte[] bytes = encoding.GetBytes(s);
compressionStream.Write(bytes, 0, bytes.Length);
}
return encoding.GetString(memoryStream.ToArray());
}
}
}Решение задачи: «Выход из блока using через return. Произойдет ли Dispose()?»
textual
Листинг программы
class SomeUnit : IDisposable
{
public void Dispose()
{
Console.WriteLine("SomeUnit.Dispose");
}
}