c# Queue Action 使用报错

private Queue<System.Action> actionQueue;
private Action OnLoginSuccess;
private Action<INError> OnLoginFailure;
void Awake () {
    actionQueue = new Queue<System.Action>(1024);
}
void Start () {
    OnLoginSuccess = LoginSuccess;
    OnLoginFailure = LoginFailure;
}
public void GuestLogin(){
    auth.Login((INSession session)=>
    {
        actionQueue.Enqueue(OnLoginSuccess);
    },(INError error)=> {
        // 弹出登录错误
        actionQueue.Enqueue(OnLoginFailure (error)); //报错无法从“void”转换为 system.action
    });
}
private void LoginSuccess(){}
private void LoginFailure(INError error){}

OnLoginSuccess没什么问题, 但是OnLoginFailure(error)报错无法从“void”转换为 system.action. 应该是参数的问题吧?

阅读 3.7k
2 个回答

虽然不知道什么用意,但是 actionQueue<Action> 指定的是Action,Enqueue进去的也一定是 Action类型的才对,要么 OnLoginFail 返回Action,要么 ()=>OnLoginFail (error) ,

private Queue<System.Action> actionQueue;

private 改为 Public 呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进