繁体   English   中英

IPEndpoint必须上传吗?为什么?

[英]Does IPEndpoint have to be up-cast and why?

let test_smtp (smtp_server_address : string) (port : int) =
    let hostEntry : IPHostEntry = Dns.GetHostEntry(smtp_server_address)
    let endPoint : IPEndPoint = new IPEndPoint (hostEntry.AddressList[0], port)
    ( use tcpSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp) 
      tcpSocket.Connect(endPoint)
    )

在上面的不完整的代码段中,

let endPoint : IPEndPoint = new IPEndPoint (hostEntry.AddressList[0], port)

产生两个错误。 第一个表示无法找到合适的重载方法。

第二个错误,我以前没见过,是

This value is not a function and cannot be applied.

我通过将一个单独的let语句分配给IPAddress,并将错误映射到该行(未包含在上面的示例中),将其隔离到hostEntry.AddressList[0]

我看过一些关于F#无法上传的文章,但我仍然对为什么会出现这个错误感到困惑。

正如kvb在评论中所说

a[0]

表示“将a视为应用于仅包含零'的单个参数列表的函数”。

你要

a.[0]

获取数组a的零索引元素。

一旦你修复了它,类型推断将适用于重载解析而不需要强制转换等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM