什么是不同的Callback与新的AsyncCallback(回调)?

时间:2014-09-30 04:53:26

标签: c# network-programming asyncsocket

对于AsyncSocket

// accept
...
listener.BeginAccept( new AsyncCallback(AcceptCallback), listener);
// listener.BeginAccept( AcceptCallback, listener);
...

public void AcceptCallback(IAsyncResult ar)
{
...
}

// recieve
...
socket.BeginReceive(buffer, offset, length, 0, new AsyncCallback(ReadCallback), asyncSocket);
// socket.BeginReceive(buffer, offset, length, 0, ReadCallback, asyncSocket);
...

public void ReadCallback(IAsyncResult ar)
{
...
}

我们可以使用Callback而不是新的AsyncCallback(Callback)

Callback与新的AsyncCallback(Callback)有何不同?

2 个答案:

答案 0 :(得分:2)

  

Callback与新的AsyncCallback(Callback)有何不同?

它被称为Delegate Inference。前者允许编译器推断委托类型,后者明确说明它。

答案 1 :(得分:2)

他们是一样的。 "新"旧版本的编译器需要关键字。较新版本的编译器可以推断出委托。无论哪种方式生成相同的代码。