Фрагмент кода выглядит следующим образомНесколько блоков использования, этот код безопасен?
public static string ToCompressedBase64(this string text)
{
using (var memoryStream = new MemoryStream())
{
using (var gZipOutputStream = new GZipStream(memoryStream, CompressionMode.Compress))
{
using (var streamWriter = new StreamWriter(gZipOutputStream))
{
streamWriter.Write(text);
}
}
return Convert.ToBase64String(memoryStream.ToArray());
}
}
Насколько я знаю, если класс содержит поле, которое IDisposable Затем он должен осуществить сам IDisposable и заботиться о распоряжении принадлежащего объекта, так и с этими предположениями, после удаления streamWriter также будет удален gZipOutputStream и memoryStream. Но нам по-прежнему не нужно выделять memoryStream для вызова метода toArray() на нем.
Итак, вопрос в том, вызывает ли метод ToArray() метод memoryStream в конце безопасного?
Есть ли причина, по которой вам нужно позвонить в конце? Я бы назвал это сразу после streamWriter.Write. – Kevin
@Kevin 'GZipStream', возможно, не обработал все данные после вызова' StreamWriter.Write'. – Dirk