Mamezou.NET

STEP6クラス実装を読んだ。
ついにC#のコードが出現。まずは例外処理と契約による設計の実装方法。

例外はJavaとほぼ同じだけど、.NETにはManagedコードとUnmanagedコードというものがあってUnmanagedだと例外の情報を得ることができないことが分かった。
COMを呼び出すとか、.NET外のプログラムを利用するコードがUnmanagedコードみたい。

▼Managedコード

Microsoft .NETの標準動作環境である、CLRの管理下で実行されるプログラムコード。C#などの.NET対応言語によって、.NETのプログラミング規約を守って開発されたプログラムがマネージドコードである。CLRが提供するガーベジコレクションなどの機能をフルに利用できるコードである。CLRの管理を受けないプログラムのことはアンマネージドコードという。

あと、契約による設計をサポートするのがDebugクラスのAssertメソッドで、このメソッドがfalseを受け取るとアサートエラーになる。
Debugクラスはコンパイル時にオプション「/d:DEBUG」を指定するか、ソースコードの先頭に「#define DEBUG」を記述しておけば有効になる。

#defineで指定する方はどういうときに使うと有効なのだろう?いろんなファイルに分散して定義されたら大変な気がするけど。
#define DEBUGを無効にするコンパイルオプションは用意されてるのかな。