【发布时间】:2017-11-09 12:48:19
【问题描述】:
我对这种行为有点疑惑,
这段代码编译得很好:
private void CheckAvailabilityOfCurrentTreeNodes() {
foreach( TreeNode treeNode in this.DeviceTree.Nodes ) {
if( Object.ReferenceEquals(treeNode.Tag, _recorder.CaptureDevice) ) {
...
}
}
}
但是下面会产生一个编译错误,说'object' does not contain a definition for 'Tag'
private void CheckAvailabilityOfCurrentTreeNodes() {
foreach( var treeNode in this.DeviceTree.Nodes ) {
if( Object.ReferenceEquals(treeNode.Tag, _recorder.CaptureDevice) ) {
...
}
}
}
在这种情况下,类型推断逻辑返回 Object 作为迭代器的结果类型,但我不清楚为什么,因为 TreeNodeCollection 是强类型的。是不是因为这个收藏类型已经过时了?
有人能告诉我这种行为的技术原因吗?
【问题讨论】:
标签: .net winforms visual-studio-2013 type-inference c#-5.0