2014-09-30 28 views
2

對於AsyncSocket什麼是不同的回調vs新的AsyncCallback(回調)?

// 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) 
{ 
... 
} 

我們可以只使用回調,而不是新的AsyncCallback(回調)

所不同的只是回調VS新的AsyncCallback(回調)?

回答

2

它們是一樣的。舊版本的編譯器需要「新」關鍵字。較新版本的編譯器可以推斷委託。任何一種方式都會生成相同的代碼。

+1

謝謝。你的答案是我想要的。 – user2523112 2014-10-02 02:14:34

+0

@ user2523112 - 此外,大多數Visual Studio「生成」代碼仍使用「新」關鍵字委託語法。所以你仍然可以在.Designer.cs文件中看到。 – 2014-10-02 15:07:24

2

有什麼不同只是回調vs新的AsyncCallback(回調)?

它被稱爲Delegate Inference。前者允許編譯器推斷委託類型,後者明確說明它。

+0

感謝您的回答。 – user2523112 2014-10-02 02:14:49