gpt4 book ai didi

C#函数作为参数

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:44 26 4
gpt4 key购买 nike

我需要帮助。我正在制作一个程序,但遇到了问题。

我已经有了一个带委托(delegate)的构造函数:

public delegate bool delIsDone(int curState, int needState);
public Progress(delIsDone doneFunction) { ... }

我需要传递它而不是在创建之外创建它:

public bool check() { return true }
Progress p = new Progress(check);

我需要做这样的事情:

  Progress p = new ProgressChecker(bool check(int currentProgress, int needProgress) {
return currentProgress < needProgress;
});

其中 ProgressChecker 是一个具有检查进度的方法的类。

在循环中,我执行此函数以获得结果。如果函数返回“true”,则表示“取得成就”,我需要保持它。

谢谢帮助

最佳答案

在构造函数中你可以像这样传入一个函数:

ProgressChecker(Func<int,int,bool> checker)

这意味着您可以将函数传递给 ProgressChecker 的构造函数

public bool checker (int a, int b)
{
return a < b;
}

var t = new ProgressChecker(checker);

编辑:

如果你想使用委托(delegate),那么在ProgressChecker类,构造函数必须采用该委托(delegate)类型:

private delIsDone delIsDone;

public ProgressChecker(delIsDone delIsDone)
{
this.delIsDone = delIsDone;
}

您可以像这样传递一个委托(delegate)实例:

public class Program
{
public delegate bool delIsDone(int curState, int needState);

public static bool checkNumbers(int a, int b)
{
return a < b;
}

public static void Main(string[] args)
{
var t = new ProgressChecker(new delIsDone(checkNumbers));
// OR var t = new ProgressChecker(new delIsDone((a, b) => { return a < b; }));
}
}

关于C#函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33708624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com