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

t72*_*t72 1 c# sockets asynchronous

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

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

Bra*_*NET 6

首先BeginSend/BeginReceive是不静态(如图你链接到代码示例中,通过将它们证明通过的一个实例被调用Socket).他们在静态方法中的原因是样本是在Main没有任何额外类定义的情况下运行的.

Main是一种static方法,因此它也会标记直接调用的方法static.然后传播到样本中的所有其他方法.

简而言之,不,不需要从static方法中运行这些函数.

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