【问题标题】:What is different Callback vs new AsyncCallback(Callback)?Callback 与新的 AsyncCallback(Callback) 有什么不同?
【发布时间】:2014-09-30 04:53:25
【问题描述】:

对于异步套接字

// 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 而不是 new AsyncCallback(Callback)

Callback 与 new AsyncCallback(Callback) 有何不同?

【问题讨论】:

    标签: c# network-programming asyncsocket


    【解决方案1】:

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

    【讨论】:

    • 谢谢。你的答案就是我想要的。
    • @user2523112 - 此外,大多数 Visual Studio“生成”代码仍使用“new”关键字委托语法。所以你仍然可以在 .Designer.cs 文件等中看到它。
    【解决方案2】:

    Callback 与 new AsyncCallback(Callback) 有何不同?

    它叫Delegate Inference。前者让编译器推断委托类型,后者明确声明它。

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2012-07-18
      • 2011-03-03
      相关资源
      最近更新 更多