-Code-Schnipsel ist alsMehrfach verwendbarer Block, ist dieser Code sicher?
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());
}
}
folgt Soweit ich weiß, wenn Klassenfeld enthält, die IDisposable ist, dann sollte es IDisposable selbst und kümmern sich um die Entsorgung des eigene Objekts, so mit diesen Annahmen implementieren, nach der Entsorgung von streamWriter werden auch der gZipOutputStream und memoryStream entsorgt. Aber wir müssen noch nicht memoryStream entsorgt haben, um toArray() -Methode auf It aufzurufen.
Die Frage ist also, ruft ToArray() Methode auf MemoryStream am Ende sicher?
Gibt es einen Grund, warum Sie es am Ende anrufen müssen? Ich würde es sofort nach dem streamWriter.Write aufrufen. – Kevin
@Kevin Der 'GZipStream' hat möglicherweise nicht alle Daten nach dem Aufruf von' StreamWriter.Write' verarbeitet. – Dirk