无法将默认比较器作为IComparer <object>传递

Joe*_*Fan 2 c# generics llblgenpro

我试图IComparer<object>使用代码调用一个期望参数类型的"排序"方法:

collection.Sort((IComparer<object>)Comparer<DateTime>.Default)
Run Code Online (Sandbox Code Playgroud)

它构建但在运行时我得到一个带有消息的InvalidCastException:

Unable to cast object of type
'System.Collections.Generic.GenericComparer`1[System.DateTime]'
to type 'System.Collections.Generic.IComparer`1[System.Object]'.
Run Code Online (Sandbox Code Playgroud)

怎么办?

Av *_*zur 7

如果您想要的只是默认比较,这将有效:

collection.Sort(Comparer<object>.Default)
Run Code Online (Sandbox Code Playgroud)

Comparer.Default使用对象的固有比较语义(即IComparable.CompareTo).