LoginSignup
3
3

More than 5 years have passed since last update.

Form.Showをusingで囲んじゃだめだよ

Posted at

Windows FormsのFormはIDisposableなので、usingで囲って使うことがよくある。

よくある例
using (var f = new Form())
{
    f.ShowDialog();
}

ShowDialogだとこれでいいんだが、Showだと問題がある。

よくない例
using (var f = new Form())
{
    f.Show();
}

Showメソッドはすぐに処理が返ってくるので、即座にusingを抜けてDisposeされる。
つまり、表示した次の瞬間には消える。

usingを使わず、単にnewしてShowすればいい。

よい例
var f = new Form();
f.Show();

Showメソッドで表示した場合、Formを閉じた時点でリソースも解放されるそうだ(細かいことは未確認)。

みんなはForm.Showをusingで囲むなんてあほなミスしないでね!

一応サンプルコード
.NET 4.6.1で確認したけど、たぶんバージョンによらないと思う。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3