Avoir ce code:
using (BinaryWriter writer = new BinaryWriter(File.Open(ProjectPath, FileMode.Create))) { //save something here }
5 Réponses :
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. P>
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. p>
Tant que tout est enveloppé dans un Le en utilisant le bloc code>, vous n'avez pas besoin d'appeler explicitement
Fermer code>. P>
en utilisant le bloc code> s'assurera que l'objet est disposé, et le
fermeture code> et
Disposez code> Les méthodes sont interchangeables sur
Barronnage code>. (La méthode
Fermer code> Appels simples
Dispose code> DANS LES SCÈNES.) P>
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:
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. P>
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. P>
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).