我遇到了一些麻烦,我写了一个 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();
最佳答案
这是不允许的,因为 Func<XElement,TreeNode[]>
的构造函数可以假设调用 arrayDel
之前的函数已初始化,这意味着该函数将观察未初始化的变量。
因为你知道那不会发生,而且arrayDel
的值(value)在那种情况下会完全无关紧要,只需先将变量初始化为某个虚拟值即可。
Func<XElement, TreeNode[]> arrayDel = null;
arrayDel = new Func<XElement,TreeNode[]>(...);
关于c# - 在 Func 体内调用 Func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22167755/