在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