我遇到了一些麻烦,因为我已经编写了一个Func,IDE不喜欢我在Func体内调用Func,我也不太明白为什么,如果我用相同的返回类型和参数将这个精确的代码放在一个方法主体中,那么它就能工作了。
下面是代码:
Func<XElement, TreeNode[]> arrayDel = new Func<XElement,TreeNode[]>(a =>
{
List<TreeNode> nodes = new List<TreeNode>();
foreach (XElement item in a.Elements())
{
if (item.HasElements)
{
nodes.Add(new TreeNode(item.Name.ToString(), arrayDel(item))); }
else
{
nodes.Add(new TreeNode(item.Name.ToString())); }
}
return nodes.ToArray();发布于 2014-03-04 09:29:35
这是不允许的,因为Func<XElement,TreeNode[]>的构造函数可以假设在初始化arrayDel之前调用函数,这意味着函数将观察一个未初始化的变量。
因为您知道这种情况不会发生,而且在这种情况下arrayDel的值是完全不相关的,所以只需先将变量初始化为某个虚拟值。
Func<XElement, TreeNode[]> arrayDel = null;
arrayDel = new Func<XElement,TreeNode[]>(...);https://stackoverflow.com/questions/22167755
复制相似问题