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中调用/调用回调他有没有孩子的方法?