Escribí un código hoy y fue cambiado por otro desarrollador que dijo que era más seguro. No estoy seguro de que esto es correcto ya que no puedo ver la ventaja de lo que se hizo aquí hay algunos ejemplos de códigoCerrar una secuencia en la función, ¿una mala idea?
public byte[] ReadFile(Stream stream)
{
byte[] result = null;
try
{
// do something with stream
result = <result of operation>
}
finally
{
stream.Close();
}
return result;
}
esto fue cambiado a
public byte[] ReadFile(Stream stream)
{
byte[] result = null;
// do something with stream
result = <result of operation>
return result;
}
soy bastante nuevo en C# si la corriente no estar cerrado cuando haya terminado con ella?
No es que en ninguno de los casos sea beneficioso que su 'ReadFile' documente si cierra o no la transmisión. Por ejemplo, el constructor de 'StreamReader' que toma una secuencia dice específicamente que dispone de esa secuencia, por lo que la persona que llama no debe deshacerse de ella otra vez. – Servy
@Servy: es más exacto decir que la persona que llama no necesita deshacerse de ella nuevamente. 'Dispose' está destinado a ser idempotente por diseño, por lo que llamarlo repetidamente no debería tener ningún efecto. – Douglas
@Douglas Todavía es importante saber si un método elimina el pasado en 'IDisposable' porque la persona que llama puede desear continuar usándolo. Si se lo pasa a alguien que se deshace de él y lo usa de nuevo, ¡BAM! – Servy