Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#异步套接字方法(BeginSend/BeginReceive等)必须是静态的吗?若然,原因为何?_C#_Sockets_Asynchronous - Fatal编程技术网

C#异步套接字方法(BeginSend/BeginReceive等)必须是静态的吗?若然,原因为何?

C#异步套接字方法(BeginSend/BeginReceive等)必须是静态的吗?若然,原因为何?,c#,sockets,asynchronous,C#,Sockets,Asynchronous,前。 我想知道像BeginSend、BeginReceive等C#方法是否必须声明为静态的,如果是,为什么 我目前正在构建客户机/服务器体系结构,希望从BeginSend/CallBack方法内部访问非静态方法/属性。首先BeginSend/BeginReceive不是静态的(如链接到的代码示例所示,通过Socket的实例调用它们就证明了这一点)。它们在静态方法中的原因是,该示例旨在从Main运行,而不需要任何额外的类定义 Main是一个static方法,因此它直接调用的方法也被标记为stati

前。 我想知道像BeginSend、BeginReceive等C#方法是否必须声明为静态的,如果是,为什么


我目前正在构建客户机/服务器体系结构,希望从BeginSend/CallBack方法内部访问非静态方法/属性。

首先
BeginSend/BeginReceive
不是静态的(如链接到的代码示例所示,通过
Socket
的实例调用它们就证明了这一点)。它们在静态方法中的原因是,该示例旨在从
Main
运行,而不需要任何额外的类定义

Main
是一个
static
方法,因此它直接调用的方法也被标记为
static
。然后,这将传播到样本中的所有其他方法

简而言之,No,不需要从
静态方法运行这些函数


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

首先
BeginSend/BeginReceive
不是静态的(如链接到的代码示例所示,通过
Socket
的实例调用它们即可证明)。它们在静态方法中的原因是,该示例旨在从
Main
运行,而不需要任何额外的类定义

Main
是一个
static
方法,因此它直接调用的方法也被标记为
static
。然后,这将传播到样本中的所有其他方法

简而言之,No,不需要从
静态方法运行这些函数


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

不,它们没有-这只是一个糟糕/懒惰的示例。只需创建回调,使其不是静态方法和viola。不,它们不是-这只是一个糟糕/懒惰的示例。只需创建回调,使其不是静态方法和viola。