Druhá část malinko nepřesně, ale jinak v zásadě správně. Na uvedeném řádku přetypováním na interface opravdu dojde k operaci boxing (malá nápověda v nadpisu článku), tj. k vytvoření kopie dat hodnotového typu do nového objektu. Metoda Dispose je pak volána nad touto kopií nikoliv nad původní hodnotou a tudíž pouze v této kopii dojde ke změně příznaku IsDisposed na true. resource.IsDisposed zůstává false (což by v reálném scénáři nezabránilo použít již zavřený zdroj). Problém je právě v tom, že tento hodnotový typ není immutable, a kód demonstruje obecnou špatnost "mutable" struktur, více jsem o tom v minulosti již psal zde: http://www.dotnetportal.cz/blogy/15/Null...
|