Вот случай, когда вы не хотите использовать var.
foreach (Control control in this.Controls)
{
control.Hide();
}
делает именно то, что вы хотите.
Проверьте это, если не верите.
Для других сценариев, где вы могли бы иметь смешанную коллекцию, вы могли бы сделать что-то вроде
foreach (var foo in listOfObjects.OfType<Foo>())
{
}