Выход из блока 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"); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д