引数としてハンドル型を受け取るということになる。一体、ハンドル型とは何者か。シグネチャを見れば分かりやすい。表すと以下のようになる。いう記号が追加されていることが分かる。これらがハンドル型と呼ばれるものである。何もついていないことも分かる。これらの違いはどこから生まれてくるのか。高級言語では、クラスの扱いが根本的に異なるのである。それは、値型(構造体)と参照型(クラス)だ。参照型は、オブジェクトを指し示す間接型だ。変数が宣言されると共にオブジェクトが割り当てられる。別の変数に代入するとコピーが作られる。参照型の変数は、オブジェクトとは独立している。そのオブジェクトを指し示すようになるだけだ。そのため、複数の変数が同じオブジェクトを示すことがある。特例として何も指し示さない状態も表現できる。構文上では意識しなくても良いようになっている。通常の変数は全てオブジェクトそのものを示す。参照しているということを明示する必要がある。間接構文が必要となるのだ。ハンドル型とポインタ型はどう違うのか。ポインタが示すのは、アンマネージオブジェクトで、ハンドルが示すのは、マネージオブジェクトである。間接的にオブジェクトを示すことに変わりはない。ポインタはメモリアドレスを指し示すが、ハンドルは、特定のアドレスを指す数値とは限らない。不定期にガベッジコレクションが発生する可能性がある。特定のメモリアドレスに常に存在する保証はないのだ。加算や減算などのアドレス計算はできない。数値である保証すらない、未知の値と考えるべきである。いう変数に関連付けている。構文規則に従い、変数は常にオブジェクトと一体だ。参照ではなくオブジェクトそのものである。このような表現はできない。メソッドに渡さなければならないのは、オブジェクトそのものではなくて、参照である。