【问题标题】:Why does Socket.Select(...) take IList and not (also) IList<Socket>?为什么 Socket.Select(...) 采用 IList 而不是(也) IList<Socket>?
【发布时间】:2011-03-06 08:52:14
【问题描述】:

我正在使用 C# / .NET 3.5 中的选择器模式实现一些网络代码。然而,我惊讶地发现Select 方法采用非泛型IList 而不是IList&lt;Socket&gt;。它在帮助文档中清楚地说明了这里需要一个套接字列表而不是其他任何东西。

有人知道为什么会这样吗?

【问题讨论】:

    标签: c# .net sockets css-selectors


    【解决方案1】:

    Socket.Select(我假设您的意思是 Select)是 .NET 1.0 中已经存在的一种方法,微软显然从未费心更新它,可能是因为它是一个古怪且很少使用的 API。

    【讨论】:

    • 提供一个重载并用ObsoleteAttribute装饰原函数。
    【解决方案2】:

    来自the docs

    支持:4、3.5、3.0、2.0、1.1、1.0

    这在 .NET 1.0 中会是一个非常有趣的签名...

    在不破坏现有调用者的情况下无法更改签名。他们本可以添加一个重载,但我不确定它是否会有很大帮助 - 如果您尝试使用带有错误参数类型的“新”重载(例如 List&lt;string&gt; 而不是 List&lt;Socket&gt;)它会只是绑定到旧的重载。

    【讨论】:

    • 谢谢。关于他们为什么不能只添加额外的重载的解释是我所缺少的。
    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多