| ■91586 / ) |
Re[20]: メモリリークに関して |
□投稿者/ 魔界の仮面弁士 (2232回)-(2019/07/10(Wed) 16:37:37)
|
■No91585 (shu さん) に返信 > C#はswitchでこの要件を満足するのは厳しいと認識しております。 > 一応次のようにすれば可能
C# の言語仕様的には一応、C# 7.0 以降で 「型による分岐」がサポートされるようになっていたりします。
今回は VS2008 (C# 3.0) なので使えないですが…。
foreach (Control c in Controls ) { switch (c) { case System.Windows.Forms.Label _: case System.Windows.Forms.TextBox _: c.Font.Dispose(); c.Dispose(); break; } }
// ----------------
foreach (Control c in Controls ) { switch (c) { case System.Windows.Forms.Label lbl: lbl.Font.Dispose(); lbl.Dispose(); break; case System.Windows.Forms.PictureBox pic: pic.Image?.Dispose(); pic.BackgroundImage?.Dispose(); pic.Dispose(); break; } }
ただし、型による分岐はジャンプ命令に変換されないので、 内部的には if 分岐と変わらなくなりますね。
|
解決済み
|