我有一个名为 CompleteDownload 的函数,它接受 int 参数,我想打印该函数中的百分比
public void CompletedDownload(int percentage)
{
Console.WriteLine(mID+":"+percentage+"% Loading is Completed");
}
我有一个功能:
public void LoadProcedure(int n,Action<int> inAction)
{
// LoadingDisplay loadingDisplay=new LoadingDisplay(n);
for(int i=0;i<=n;i++)
{
if(i==n/4)
{
inAction(i);
}
}
}
我想使用 func delegate 将 i 值返回给 Completeddownload 函数,方法是什么
Loading loading=new Loading();
loading.LoadProcedure(100,display.CompletedDownLoad);
并帮助我主要了解如何指定它。
最佳答案
在您的示例中,您似乎不需要对响应执行任何操作。因此,而不是尝试从 CompletedDownload
返回值方法,您可以处理您的操作,并在满足条件时简单地中断循环。
public void LoadProcedure(int n, Action<int> inAction)
{
// LoadingDisplay loadingDisplay=new LoadingDisplay(n);
for (int i = 0; i <= n; i++)
{
if (i == n / 4)
{
inAction(i);
break;
}
}
}
这将运行您的操作,退出循环,然后返回到调用方法。
如果您绝对需要返回触发操作的输入变量,只需更改 LoadProcedure
的返回类型从 void 到 int 并返回结果。
var result = loading.LoadProcedure(100,display.CompletedDownLoad);
public int LoadProcedure(int n, Action<int> inAction)
{
// LoadingDisplay loadingDisplay=new LoadingDisplay(n);
for (int i = 0; i <= n; i++)
{
if (i == n / 4)
{
inAction(i);
return i;
}
}
}
无需更改inAction
到 Func<>
因为您当前没有在 inAction 中进行任何计算。
关于c# - 如何用 func 委托(delegate)替换 Action 委托(delegate)将值返回给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59936738/