Всегда нужно закрывать потоки или, поскольку управляемый код .net будет закрыт автоматически, как только он выпадет из области видимости (при условии, что исключений не было).
Illustrated:
static string SerialiseObjectToBase64(object obj)
{
var mstream = new MemoryStream();
...
return Convert.ToBase64String(mstream.ToArray());
}
Является ли приведенный выше код приемлемым?