为什么在 foreach for XmlNode 中使用的 var 不推导出真实类型,仅推导出对象? [英] Why var used in foreach for XmlNode does not deduce real type, only object?

查看:21
本文介绍了为什么在 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屋!

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