A#とVisualStudio2005による.NETプログラミング・コンパイラクラッシュ回避編
コンパイラがクラッシュするのはどうもwith
が原因のようだ。そういえば前にAda05で遊んでいたときも、limited with
なんかで複雑な参照を行うとコンパイラがクラッシュすることがあった。
回避策としては、ソース内に現れる型を含むパッケージをwith
するのが良いようだ。たとえば、
with Mssyst.Drawing.Brushes;
...
Foo.new_Foo(brush => Mssyst.Drawing.Brushes.get_Black);
のようなコードを書くときは、get_Black
で渡される型を含むパッケージであるMssyst.Drawing.Brush
も一緒にwith
しておくとよい。
with Mssyst.Drawing.Brush;
似たような状況は恐らくいくつかの場面で見られると思う。コンパイラが落ちたらとりあえず必要そうな型をwith
してみると良いだろう。