我正在将代码从C ++转换为C#。我有这条线:
typedef bool (*proc)(int*, ...);
我能用C#做到吗?
答案 0 :(得分:3)
简短回答:是的。
<强>一般强>
(未经测试......只是一个大纲)
{
bool AFunction(ref int x, params object[] list)
{
/* Some Body */
}
public delegate bool Proc(ref int x, params object[] list); // Declare the type of the "function pointer" (in C terms)
public Proc my_proc; // Actually make a reference to a function.
my_proc = AFunction; // Assign my_proc to reference your function.
my_proc(ref index, a, b, c); // Actually call it.
}
答案 1 :(得分:0)
Delegates并非严格等同,但用于类似目的。
样品:
public delegate void DoSth(string message);
void foo(string msg) {
// ...
}
void bar() {
DoSth delg = foo;
delg("tttttt");
}
如果您尝试使用P / Invoke从本机C ++库调用代码,则需要查看GetDelegateForFunctionPointer和GetFunctionPointerForDelegate Method对函数。