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

Posted

技术标签:

【中文标题】Callback 与新的 AsyncCallback(Callback) 有啥不同?【英文标题】: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) 有何不同?

【问题讨论】:

【参考方案1】:

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

【讨论】:

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

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

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

【讨论】:

以上是关于Callback 与新的 AsyncCallback(Callback) 有啥不同?的主要内容,如果未能解决你的问题,请参考以下文章

UIPickerView 与新的 UITableViewController

HttpClientFactory.Create 与新的 HttpClient

Runnable::new 与新的 Runnable()

Promise.resolve 与新的 Promise(resolve)

Bootstrap 下拉菜单不与新的 Rails 布局切换

UIAlertView 显示方法与新的 UIAlertController 对象等效吗?