【问题标题】:Do C# Async Socket methods (BeginSend/BeginReceive, etc.) have to be static? If so, why?C# 异步套接字方法(BeginSend/BeginReceive 等)是否必须是静态的?如果是这样,为什么?
【发布时间】:2014-12-30 02:00:27
【问题描述】:

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

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

【问题讨论】:

  • 不,他们没有 - 这只是一个可怜/懒惰的例子。只需创建回调,使其不是静态方法和 viola

标签: c# sockets asynchronous


【解决方案1】:

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

Main 是一个static 方法,所以它直接调用的方法也标记为static。然后将其传播到示例中的所有其他方法。

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

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

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2014-05-27
    • 2018-05-15
    • 1970-01-01
    相关资源
    最近更新 更多