[英]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);
}
}
}
我想使用 func 委托將 i 值返回給 Completeddownload 函數是什么方法
Loading loading=new Loading();
loading.LoadProcedure(100,display.CompletedDownLoad);
並幫助我主要如何指定它。
在您的示例中,您似乎不需要對響應執行任何操作。 因此,您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 中進行任何計算。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.