在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);
}
}
另外,我想用这个receivData
功能class b
这样的:
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*/
}
}
请让我知道如果processData
在class b
的声明是必要的。
这是在C#中传递函数指针的正确方法吗?
感谢您的答复。有没有更好的方式来做到这一点。不得不在不同的类中声明相同的代表听起来多余。 – alex 2009-11-05 01:34:10