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的类型是object。类型推断有点起作用,但是会推断出object。
显然,XmlNodeList的元素不是一个定义的类型,但将它们分配给XmlNode而不是var会隐式执行某些操作(强制转换或拆箱)。
第一个问题:背后的机制是什么?
第二个(相关的)问题:如何找到可以在这种循环中使用的类型?VS.NET IDE是否有帮助?