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