今天我遇到了一个奇怪的问题。假设我有一个像这样定义的“TreeNode”:
```html
这个方法看起来就像这样:
在那个
有人能解释这种行为吗?
```html
TreeNode
```TreeNode node = new TreeNode();
node.Nodes.Add(new TreeNode { Name = "aaa" });
node.Nodes.Add(new TreeNode { Name = "bbb" });
接着我调用一个递归方法
ColorNode(node.Nodes, Color.Green);
这个方法看起来就像这样:
void ColorNode(TreeNodeCollection nodes, System.Drawing.Color Color)
{
foreach (var child in nodes)
{
child.ForeColor = Color;
if (child.Nodes != null && child.Nodes.Count > 0)
ColorNode(child.Nodes, Color);
}
}
在那个
foreach
循环中,如果我保留var child
,Visual Studio会报错:
但是,如果我将对象不包含ForeColor的定义,也找不到接受类型为object的第一个参数的ForeColor扩展方法。
对象不包含Nodes的定义,也找不到接受类型为object的第一个参数的Nodes扩展方法。
var child
更改为TreeNode child
,一切都按预期工作。有人能解释这种行为吗?