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してみると良いだろう。