Je suis intéressé à regarder le code généré par le compilateur pour le bloc de code using
qui génère try-finally
, mais je ne vois pas les deux dotPeek
et ILSpy
montrant ce détail. J'ai utilisé ildasm.exe
pour regarder ce bloc de code et je vois qu'il a le bloc try-finally
dedans mais ne peut pas le comprendre bien ... donc a voulu voir si ces 2 outils aideraient.« utilisant » compilateur bloc code généré non visible dans dotPeek ou ILSpy
Des idées?
MISE À JOUR: Je récemment utilisé une struct qui a mis en œuvre IDisposable dans mon projet et était inquiet si le bloc de code using
et struct avec IDisposable provoqueraient la boxe ... mais j'ai trouvé plus tard l'article suivant qui a mentionné que la Le compilateur optimise pour cette situation et ne tape pas lorsque vous essayez d'appeler Dispose.
http://ericlippert.com/2011/03/14/to-box-or-not-to-box/
J'étais curieux de voir quel genre de code ne le compilateur génère pour mon bloc à l'aide.
Poster quelques exemples code décompilé! –
ILSpy (et je devine dotPeek également) reconnaîtra le compilateur a généré l'expansion de l'instruction 'using 'et l'inversera dans une instruction' using'. –
Si vous vous interrogez sur l'IL, voir [ici] (http://weblogs.asp.net/kennykerr/introduction-to-msil-part-5-exception-handling). Une instruction MSIL sera générée le long des lignes '.try L_000b à L_001d enfin le gestionnaire L_001d à L_0027' avec une instruction quelque part comme' leave.s L_0027'. –