为什么在 foreach for XmlNode 中使用的 var 不推导出真实类型,仅推导出对象? [英] Why var used in foreach for XmlNode does not deduce real type, only object?
本文介绍了为什么在 foreach for XmlNode 中使用的 var 不推导出真实类型,仅推导出对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
让 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)
那么child的类型不是XmlNode
,只有object.我不能使用 child.NodeType
,编译器说:
then the type of child is not XmlNode
, only object. I cannot use child.NodeType
, compiler says:
object' 不包含 'NodeType
这是为什么?
推荐答案
ChildNodes
属于 XmlNodeList
类型,定义为
ChildNodes
is of type XmlNodeList
which is defined as
public abstract class XmlNodeList : IEnumerable, IDisposable
它的枚举器返回一个object
.当您使用 XmlNode
而不是 var
时,.net 会自动casts
对象到 XmlNode
.但是当您使用 var
时,child 被视为一个对象.
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 for XmlNode 中使用的 var 不推导出真实类型,仅推导出对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文