Ne Stream.Disposer toujours d'appel de Flux.De près (et de Flux.Flush)

Si j'ai la situation suivante:

StreamWriter MySW = null;
try
{
   Stream MyStream = new FileStream("asdf.txt");
   MySW = new StreamWriter(MyStream);
   MySW.Write("blah");
}
finally
{
   if (MySW != null)
   {
      MySW.Flush();
      MySW.Close();
      MySW.Dispose();
   }
}

Pouvez je viens de l'appeler MySW.Dispose() et de sauter la clôture, même si c'est prévu? Il n'existe aucun Flux implimentations qui ne fonctionnent pas comme prévu (Comme CryptoStream)?

Si non, alors est la suivante tout simplement mauvais code:

using (StreamWriter MySW = new StreamWriter(MyStream))
{
   MySW.Write("Blah");
}
  • pourquoi êtes-vous en profitant de vos variables locales? Ça fait mal à ma pauvre tête 🙁
  • La convention où je suis est d'utiliser capitalisés locale étendue, et plus faible pour les params ( NewOrderLineItem vs newOrderLineItem). Juste ce que je suis habitué =)
  • double possible de Fermer et Jetez - qui appeler?
  • l'autre question est plus générique, et couvre de nombreux cas différents. SqlConnection présente quelques différences entre Close et Dispose, qui Stream n'a pas.
InformationsquelleAutor JasonRShaver | 2009-05-26