Java や C# のデストラクタ

Java の場合はファイナライザ (Finalize) と言うらしいですが、これらは先ほど紹介したガベージ・コレクションの仕組みからして「いつ呼び出されるかわからない」といった特徴を持っているようです。真面目に使ったこともなかたもんで、こんな基本的なことも知りませんでした。

先日 C# でプログラム書いているときに、オブジェクトを使い終わった後にいちいち Close やら Dispose やらのメソッド呼び出しを明示的にしてやらなければならないのはなんでだろうと思っていたのですが、つまりこういうことなんでしょうかね。これは面倒だなあ。全然高級言語っぽくないですよ! これなら RAII idiom が使える C++ の方がよほど便利な気がしてしまいます。不精なプログラマに向く言語はむしろ C++ の方だったんだよ!(なんだってー) とちょっと本気で思ってしまいました。