System.Version没有在F#中实现System.IComparable

时间:2014-12-17 11:02:48

标签: c# .net f# icomparable base-class-library

我想在F#中对Version个对象进行排序:

let maxVersion =
    versions
    |> Seq.max (fun version -> version)

编译器生成以下错误消息:

  

类型'(seq - >'a)'不支持'比较'约束。例如,它不支持'System.IComparable'接口

当我在Visual Studio中点击F12来查看Version的元数据时,它说Version只实现了ICloneable,而不是IComparable。但当我转到sourceof.net时,它表示它实现了IComparable以及其他一些接口。

F#是否使用不同版本的.NET框架?

1 个答案:

答案 0 :(得分:10)

错误消息告诉您(seq->'a)未实现IComparable这是真的,因为(seq->'a)是一个函数,而不是一个序列。

如果你查看Seq.max的签名,它只需要序列作为参数。 删除lambda (fun version -> version),它应该没问题。

否则,如果要为排序应用密钥生成器函数,请改用Seq.maxBy