【问题】
之前已经折腾成功了,C#中,将函数当做参数传递过去,不过用的是delegate:
参考某人评论,现在去实现对应的action或者是Func的版本。
【解决过程】
1.参考:
C# Passing Function as Argument
经过尝试,使用如下代码实现,Action<paras>的形式
//declaration and implementation of function public void updateProgress(int percentage) { pgbDownload.Value = percentage; } //call some other func, pass the function as parameter getUrlRespStreamBytes(xxx, updateProgress); //some other related function public int getUrlRespStreamBytes(xxx, Action<int> funcUpdateProgress) { //... if (funcUpdateProgress != null) { int currentPercent = 20; funcUpdateProgress(currentPercent); } //... }
【总结】
- 此处是当做参数要传递的函数没有返回值,所以可以用Action<paras>的形式;
- 如果当做参数要传递的函数,是有返回值的话,就要改为Func<paras, returnValue>的形式了;