如何确定对象是<type>还是<type>的后代

Vac*_*ano 3 c# c#-3.0

我有以下代码:

foreach (var control in this.Controls)
{

}
Run Code Online (Sandbox Code Playgroud)

我想control.Hide()在那里做点什么.但是this.Controls集合中的项目不是类型Control(它们是Object).

我似乎无法记住将其强制转换为隐藏的安全方法,如果它真的是类型而不Control做其他事情.(我是移植的delphi程序员,我一直在想control is Control.)

Ant*_*ram 5

这是一个你不想使用var的情况.

foreach (Control control in this.Controls)
{
    control.Hide();
}
Run Code Online (Sandbox Code Playgroud)

完全符合你的要求.

如果你不相信,请测试它.

对于您可能拥有混合集合的其他场景,您可以执行类似的操作

foreach (var foo in listOfObjects.OfType<Foo>())
{

}
Run Code Online (Sandbox Code Playgroud)