C#异步套接字方法(BeginSend / BeginReceive等)必须是静态的吗?如果是这样,为什么?

时间:2014-12-29 17:52:55

标签: c# sockets asynchronous

实施例。 http://msdn.microsoft.com/en-us/library/bew39x2a%28v=vs.110%29.aspx 我想知道像BeginSend,BeginReceive等C#方法是否必须声明为静态,如果是这样,为什么呢?

我目前正在构建一个客户端/服务器架构,我想从BeginSend / CallBack方法中访问非静态方法/属性。

1 个答案:

答案 0 :(得分:6)

首先关闭BeginSend/BeginReceive 不是静态(如您链接的代码示例所示,通过Socket实例调用它们证明)。他们 in 静态方法的原因是样本是从Main运行而没有任何额外的类定义。

Mainstatic方法,因此它直接调用的方法也标记为static。然后传播到样本中的所有其他方法。

简而言之,,无需从static方法运行这些功能。

出于同样的原因,回调方法是static。如果您在实例化方法中对BeginSend进行了初始调用,则可以使用实例化的回调/数据而没有问题。