将方法作为参数传递,以便以后可以调用该方法

本文关键字:方法 调用 参数传递 | 更新日期: 2023-09-27 18:32:19

我有一个包含一些方法的库,在某些错误期间,我希望它调用调用者定义的方法。此方法必须返回布尔值。我的意思是:

Sock sock = new Sock();
sock.OnSpecificError(theMethodToCall);

然后,当错误发生时,袜子应该首先检查是否设置了OnSpecificError。如果有,它应该运行它。如果该方法返回 false 或尚未设置 OnSepcificError,则应引发异常。

这似乎是代表们设计的目的,

但无论出于何种原因,我似乎都无法弄清楚这些代表实际上在做什么,比如,正在传递什么以及我以后将如何运行它。我目前的处理方法是愚蠢和繁琐的,所以任何帮助将不胜感激。

编辑:让我澄清一下。袜子。OnSpecificError(method) 用于简单地传递 sock 一个方法,它将存储该方法,但不会运行。这个想法是,当 sock 运行其他一些方法时,如果弹出错误,它应该运行该方法。我想保留该方法供以后使用,然后在需要时运行它。

将方法作为参数传递,以便以后可以调用该方法

从委托开始的最简单方法是使用预定义的委托。例如,不带参数并返回bool的委托将Func<bool> 。接受stringint并返回bool的委托将被Func<string,int,bool>,依此类推。

您可以像这样定义方法:

void OnSpecificError(Func<bool> errorCheck) {
    // Do your stuff...
    var gotErrors = errorCheck();
    if (gotErrors) {
        // Do something about it
    }
}

您现在可以像这样调用OnSpecificError

sock.OnSpecificError(CheckForErrors);
private bool CheckForErrors() {
    return errorCode.Equals("YES");
}

您还可以使用 lambda 来内联小方法,如下所示:

sock.OnSpecificError(() => errorCode.Equals("YES"));