web-dev-qa-db-fra.com

MemoryStream in Using Statement - Dois-je appeler close ()

Lors de l'utilisation d'un flux de mémoire dans une instruction using, dois-je appeler close? Par exemple, ms.Close () est-il nécessaire ici?

  using (MemoryStream ms = new MemoryStream(byteArray)) 
    {  
      // stuff 

      ms.Close(); 
    }
34
AJM

Non ce n'est pas.

using garantit que Dispose() sera appelé, ce qui à son tour appelle la méthode Close().

Vous pouvez supposer que tous les types de flux sont fermés par l'instruction using.

De MSDN :

Lorsque vous utilisez un objet qui accède à des ressources non managées, tel qu'un StreamWriter, une bonne pratique consiste à créer l'instance avec une instruction using. L'instruction using ferme automatiquement le flux et appelle Dispose sur l'objet lorsque le code qui l'utilise est terminé .

55
sloth

Lors de l'utilisation d'un flux de mémoire dans une instruction using, dois-je appeler close?

Non, tu n'as pas besoin. Il sera appelé par la méthode .Dispose() qui est automatiquement appelée:

using (MemoryStream ms = new MemoryStream(byteArray)) 
{  
    // stuff 
}
7
Darin Dimitrov