読者です 読者をやめる 読者になる 読者になる

雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

安全な using ステートメント

C#

私もなるほどなーと思いました。

class Foo { // IDisposable を実装していない
  public void Hoge() {
    Console.WriteLine("Execute Foo.Hoge()");
  }
}

class Test {
  static void Main() {
    var f = new Foo();
    using (var z = f as IDisposable) { // z は null になる(実行時エラーは発生しない)
      f.Hoge();
    }
  }
}

# まぁ個人的には、明示的に Dispose を呼ぶ必要のあるクラスのインスタンスを返すファクトリーなんて作るべきじゃない、と思ったりもしますが。 ^^;
# 状況によっては必要になる事もあるので、この手法は知っておくといいですね。