Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 回调不会返回到操作方法_C#_Delegates - Fatal编程技术网

C# 回调不会返回到操作方法

C# 回调不会返回到操作方法,c#,delegates,C#,Delegates,我写过这样的东西: bool hasChildren = false; Action<object> callback = o => { if (hasChildren) { // Do some stuff here. } }; base.DoesHaveAnyChildren(callback); public bool DoesHaveAnyChil

我写过这样的东西:

     bool hasChildren = false;
     Action<object> callback = o =>
     {
         if (hasChildren)
         {
           // Do some stuff here.
         }
     };

 base.DoesHaveAnyChildren(callback);
 public bool DoesHaveAnyChildren(Action<object> callback)
 {
      // stuff.
 }
bool haschilds=false;
操作回调=o=>
{
如果(有孩子)
{
//在这里做些事情。
}
};
base.doeswaveanychildren(回调);
在基类中,我定义了如下方法:

     bool hasChildren = false;
     Action<object> callback = o =>
     {
         if (hasChildren)
         {
           // Do some stuff here.
         }
     };

 base.DoesHaveAnyChildren(callback);
 public bool DoesHaveAnyChildren(Action<object> callback)
 {
      // stuff.
 }
public bool DoesHaveAnyChildren(操作回调)
{
//东西。
}
因此,我希望它首先调用
DoesHaveAnyChildren
方法,完成后返回并执行if部分中的其余内容。
但是它不是回到动作部分的内部。为什么?我错了语法和代码的哪一部分

您必须实际调用委托

public bool DoesHaveAnyChildren(Action<object> callback)
{
    // do some stuff

    //invoke the delegate before returning
    callback(5);
}

haschilds
是静态的
false
,因此
if
语句的块永远不会执行。@Servy-yes我知道。但在这种情况下,它是真的。在这种情况下,它是
false
。它永远不可能是真的,因为它是静态设置为false的,并且不会执行任何代码将其更改为任何其他内容。这里的示例似乎与实际代码相差太大,我们无法准确区分示例中的问题与实际代码中的问题。试着用一个例子来复制你在真实代码中遇到的问题,而不是忽略太多。@Servy-Oh-shot你是对的。。。这是一个问题,将会解决。但是主要的问题是它甚至没有达到这个if条件的断点。在DoesHaveAnyChildren中你说“callback(5);”:这个方法是在基类中定义的,callback是在子类中的一个方法中定义的。我不确定我是否理解您的答案:(@devwanabe您的第一段代码显示您声明了一个委托-调用时,该委托将检查
if(haschilds)
并执行一些其他操作。然后您将该委托作为参数传递给
DoesHaveAnyChildren
。现在,您说您希望
DoesHaveAnyChildren
执行一些操作,然后在委托中运行代码,对吗?为此,您的
DoesHaveAnyChildren
应该执行它需要执行的任何操作并调用该委托t在返回之前被作为参数传递。
没有任何子对象
不知道
回调
做什么-它只需要调用它。@devwanabe如果它仍然不清楚,请您解释一下您的疑问好吗?我也不确定我是否理解您的问题^^我认为它相当清楚。您是否在t中调用/调用回调他有没有孩子的方法?