10
votes

Avons-nous besoin de fermer un binarywriter C # ou BinaryReader dans un bloc d'utilisation?

Avoir ce code:

using (BinaryWriter writer = new BinaryWriter(File.Open(ProjectPath, FileMode.Create)))
{
   //save something here
}


2 commentaires

Malgré le fait qu'il s'agisse d'un type différent, il s'agit d'un duplicata de Stackoverflow.com/Questtions/1070667/... . Je voterais pour fermer, mais j'ai atteint ma limite pour la journée. Je suggère que nous n'avons pas besoin de "Devrais-je disposer d'une classe qui implémente une question isisposable" pour chaque classe qui le met en œuvre. Veuillez envisager de voter pour fermer en tant que duplicata de votre question idéale.


Qui obtient vraiment vous pensez que ceci est une faille de la documentation / API de conception: le compilateur devrait vous avertir lorsque vous effectuez des erreurs évidentes et que la documentation doit clairement étiqueter les appels proches () équivalents à disposer (et, de préférence, ne pas avoir de telles Close () appels entièrement redondants en premier lieu).


5 Réponses :


4
votes

Avec le code que vous avez là, il fermera le fichier une fois qu'il quitte l'utilisation du bloc, vous n'avez donc pas besoin d'appeler à proximité explicite.

La seule raison de ne pas utiliser que l'instruction Utilisation serait si vous souhaitez que le fichier soit toujours ouvert après avoir terminé votre binaryWriter, auquel cas vous devez vous en tenir à une référence au lieu de la transmettre au constructeur. comme ça.


0 commentaires

19
votes

Tant que tout est enveloppé dans un en utilisant le bloc , vous n'avez pas besoin d'appeler explicitement Fermer .

Le en utilisant le bloc s'assurera que l'objet est disposé, et le fermeture et Disposez Les méthodes sont interchangeables sur Barronnage . (La méthode Fermer Appels simples Dispose DANS LES SCÈNES.)


0 commentaires

4
votes

Le mettre dans une instruction à l'aide de votre exemple de code appellera un élimination, qui ferme le flux sous-jacent, donc non. Vous pouvez voir cela via le réflecteur: xxx


0 commentaires

0
votes

L'utilisation de bloc fermera automatiquement l'écrivain binaire et le mettre dans un état pour être GC'ed. L'utilisation de blocs est syntaxique pour effectuer la manipulation et la fermeture des exceptions du flux vous-même.


0 commentaires

0
votes

En enveloppant l'écrivain dans un bloc d'utilisation, la fermeture se produira automatiquement lorsque l'auteur est disposé. Donc, dans ce cas, vous n'avez pas besoin de fermer explicitement l'écrivain.


0 commentaires