C#传递方法作为参数

Sim*_*GER 2 c c# c++ api pointers

我正在使用C#中的C API.在C中,方法作为参数传递,我试图在C#中完成同样的事情.

C中我会按以下方式调用函数:

 LL_SetStatusCb(OnStatusRcv);
 LL_SetScanCb(scanCb);
 LL_Scan();
Run Code Online (Sandbox Code Playgroud)

请注意,使用的方法按以下方式定义:

void OnStatusRcv(ll_status_t status)
void scanCb(ll_scan_result_t *result)
Run Code Online (Sandbox Code Playgroud)

在C#中,方法以相同的方式定义,但我不知道如何传递这些方法.

小智 7

C#等效的函数指针是委托.您可以使用Func和Action将方法作为参数传递.Func委托表示采用N个参数并返回值的方法,Action委托表示void方法.

考虑一下

void (* myFunction)(int parameter) 
Run Code Online (Sandbox Code Playgroud)

在C#中会是

Action<int> 
Run Code Online (Sandbox Code Playgroud)