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

Joh*_*ger 2 .net c# f# icomparable base-class-library

我想Version在F#中对一系列对象进行排序:

let maxVersion =
    versions
    |> Seq.max (fun version -> version)
Run Code Online (Sandbox Code Playgroud)

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

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

当我在Visual Studio中点击F12来查看Version它的元数据时说Version它只实现了ICloneable,但没有实现IComparable.但是,当我访问sourceof.net时,它表示它实现的功能IComparable与其他一些接口一样.

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

Gus*_*Gus 10

错误消息告诉您(seq->'a)没有实现IComparable哪个是真的,因为它(seq->'a)是一个函数,而不是一个序列.

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

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