ものがたり(旧)

atsushieno.hatenablog.com に続く

Cast from IntPtr to Enum

.NET 2.0のcscでは、IntPtrからEnumに変換できてしまうというバグがあるらしい。

https://bugzilla.novell.com/show_bug.cgi?id=342584

.NET 1.1ではエラーになる。それを確認してみてコメントしたのだけど、その後MarekとMiguelが調べた感じでは、どうもcscはintへのop_Explicitをあえて出力するようだ(enumのunderlying typeがintではなくlongの場合の場合、何が起こるだろうか)。昔IntPtr型の変数にnullが代入できてしまうバグをMicrosoftに報告したことがあるけど(Marekがさっき見つけたところではまだアクティブだったらしい。僕はもはやどう対応されたのかも覚えていない)、このバグも多分修正できないのだろうな。(もちろんバグでない可能性もゼロとは言わないけど。)