为什么在使用的foreach VAR为XmlNode的不实推断类型,只有反对呢? [英] Why var used in foreach for XmlNode does not deduce real type, only object?
本文介绍了为什么在使用的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屋!
查看全文