【发布时间】:2009-11-05 01:20:16
【问题描述】:
在 C 或 C++ 中,可以使用函数指针作为另一个函数的参数,如下所示:
int example(FUNPTR a)
{
/* call the function inside */
a();
}
而且我也知道我们可以在 c# 中使用委托作为函数指针,但是如果方法 我想分配给另一个类中存在的委托,这是否意味着两个类都需要具有相同的委托声明?
例如:
class a
{
public delegate void processData(Byte[] data);
public void receivData(ProcessData dataHandler)
{
NetworkStream stream;
Byte[] data_buffer = new Byte[100];
/* receive data from socket interface */
stream.Read(data_buffer, 0, data_buffer.Length);
dataHandler(data);
}
}
另外,我想像这样在class b 中使用这个receivData 函数:
class b
{
public delegate void processData(Byte[] data);
class a = new a();
a.receivData(new processData(b.dataHandler));
public void dataHandler(Byte[] array)
{
/* handling of the array*/
}
}
如果有必要在class b 中声明processData,请告诉我。
这是在 C# 中传递函数指针的正确方法吗?
【问题讨论】: