[英]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.