如何用 func delegate return a value to function 替换 Action delegate
How to replace Action delegate with a func delegate return a value to function
我有一个名为 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);
}
}
}
我想 return 我使用 func delegate 将值设置为 Completeddownload Function 方法是什么
Loading loading=new Loading();
loading.LoadProcedure(100,display.CompletedDownLoad);
并帮助我主要说明如何指定它。
在您的示例中,您似乎不需要对响应执行任何操作。因此,您无需尝试 return 来自 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;
}
}
}
这将 运行 您的操作,退出循环,并 return 到调用方法。
如果您绝对需要 return 触发操作的输入变量,只需将 LoadProcedure
的 return 类型从 void 更改为 int 并 return结果。
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 中进行任何计算。
我有一个名为 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);
}
}
}
我想 return 我使用 func delegate 将值设置为 Completeddownload Function 方法是什么
Loading loading=new Loading();
loading.LoadProcedure(100,display.CompletedDownLoad);
并帮助我主要说明如何指定它。
在您的示例中,您似乎不需要对响应执行任何操作。因此,您无需尝试 return 来自 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;
}
}
}
这将 运行 您的操作,退出循环,并 return 到调用方法。
如果您绝对需要 return 触发操作的输入变量,只需将 LoadProcedure
的 return 类型从 void 更改为 int 并 return结果。
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 中进行任何计算。