Cela a-t-il de sens?
avoir une classe simple p> puis l'instanciationner p> le Utilisation de la déclaration est là simplement pour assurer que le test est disposé.
Quand sera-t-il disposé si je viens d'appeler p>
3 Réponses :
Basé sur votre commentaire (question principale), je suspect em> que vous confondez la collecte et l'élimination des ordures. Il n'y a aucun moyen de faire en sorte que quelque chose soit collecté, court de aussi, le " fais tout ce que "suggère faire em> quelque chose dans un constructeur mais ne pas se soucier de l'objet créé; Une méthode statique serait préférable: p> test code> n'est pas Idisposable code>, afin que cela ne compile même pas. Mais si était em> jetable, oui en utilisant code> le fera et nouveau code> par lui-même ne sera pas strong>. C'est un utilisation inhabituel em>, mais j'ai vu des personnes similaires. Rarement. gc code> (que vous devriez pas strong> faire). Sauf si vous avez un vraiment em> bonne raison de le vouloir collecté, laissez-le simplement être - chances que ce soit «génération 0» et sera collecté à moindre coût de toute façon. P>
Je discuterais de la "utilisation inhabituelle", en fait, je l'utilise assez souvent.
@Yossarian - Pouvez-vous expliquer pourquoi, et comment ça va mieux qu'une méthode normale?
Eh bien: une action (initiale) est liée à une autre action (finale), par exemple: htmlwriter.renderbegintag () code>, renduendtag () code>. Si vous lancez une exception entre ces deux (ou oubliez autrement de RenderendTag code>), il en résulte HTML / XML malformé. Donc, j'ai écrit la méthode de l'extension sur RenderBegintag, qui renvoie une classe Idisposable appelant simplement RenderendTag, et je vois maintenant clairement (via l'indentation) où est ouverte / fermé. Un autre exemple est la mesure de la durée de la longueur de certains blocs à courir. Mais, ymmv.
@Yossarian - Cette technique est appelée RAII (l'acquisition des ressources est l'initialisation). @Kobi - Raii est une pierre angulaire de logiciels fiables; Il n'est pas fortement utilisé actuellement en .NET (pour une variété de raisons), mais entre dans le grand public (témoin, par exemple la bibliothèque RX).
Concept intéressant. Merci de leur donner un nom.
@Yossarian - Notez le "rien d'ici"; C'est que i> cela le rend inhabituel
@Marc - Désolé, je reprends mon commentaire "Je discuterais", j'ai raté la partie "rien d'ici".
En ne cédant pas l'instance à une variable, elle sera admissible au GC dès qu'il dépasse de la portée. P>
ou, y a-t-il quelque chose d'autre que vous essayez d'accomplir cela? P>
Rien d'autre. Comme Marc a souligné, je gère mes actions dans le constructeur de classe qui semble être une pratique mauvaise (ou au moins inhabituelle). Je n'ai pas besoin de la classe plus loin que cela.
Est-ce que ceci est sous l'hypothèse que
test code> implémenteIdisposable code>?Non ça ne le fait pas. Comment savoir si une classe doit-elle la mettre en œuvre ou non? Faites-vous toujours le faire?
Je Suspect I> que vous confondez une «collection à la poubelle» et «élimination», qui sont deux concepts connexes mais très différents.
Je pense qu'il est probablement utilisé pour C ++ ou similaire où vous auriez besoin de supprimer un objet après la nouvelle. Avoir une lecture sur la collecte des ordures.