为什么在使用的foreach VAR为XmlNode的不实推断类型,只有反对呢? [英] Why var used in foreach for XmlNode does not deduce real type, only object?

查看:72
本文介绍了为什么在使用的foreach VAR为XmlNode的不实推断类型,只有反对呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

CLS 是类型的的XmlNode

下面的语句可以让我访问子节点:

Following statement allows me to access child nodes:

foreach (XmlNode child in cls.ChildNodes)

现在,当我尝试使用VAR:

Now when I try to use var:

foreach (var child in cls.ChildNodes)

那么孩子的类型不是的XmlNode ,只的对象的。我不能使用 child.NodeType ,编译器说:

then the type of child is not XmlNode, only object. I cannot use child.NodeType, compiler says:

对象不包含'的NodeType一个定义

这是为什么?

推荐答案

子节点的类型为的XmlNodeList 其定义为

public abstract class XmlNodeList : IEnumerable, IDisposable

其枚举返回对象。当您使用的XmlNode 而不是 VAR ,.NET会自动蒙上对象的XmlNode 。但是,当你使用 VAR ,孩子被视为一个对象。

Its enumerator returns an object. When you use XmlNode instead of var, .net automatically casts object to XmlNode. But when you use var, child is treated as an object.

这篇关于为什么在使用的foreach VAR为XmlNode的不实推断类型,只有反对呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆