Если пройти через XmlNodeList, как этот
foreach (XmlNode foo in xmlNodeList) {string baa = foo.Attributes["baa"].Value;}
, все работает, как ожидалось - foo явно относится к типу XmlNode и VS.NET IDE показывают методы и поля.
С другой стороны,
foreach (var foo in xmlNodeList) { string baa = foo.Attributes["baa"].Value; }
не компилируется, потому что здесь foo имеет тип объект . Тип вывода работает, но выводит объект .
Очевидно, элементы XmlNodeList не относятся к одному определенному типу, но назначение их XmlNode вместо var делает что-то неявно (преобразование или распаковка).
Первый вопрос: каков механизм этого?
Второй (связанный) вопрос: как найти типы, которые можно использовать в этом виде цикла? Помогает ли VS.NET IDE?