比较器/排序/相等方法和返回值



好吧,我正在学习所学的一切,并尝试在C#中实现它。考虑到我有Java背景,到目前为止,我的旅程相当顺利,但我在使用Comparer对象和函数等方面遇到了问题。我不关心直接实现/翻译,但我想知道C#如何比较两个泛型值。它用什么对它们进行排序?哈希代码,或者一些特定于C#的方法?

为了澄清,我知道如何使用C#中的方法进行排序、搜索等。我想知道的是到底发生了什么——Comparer和其他函数用来比较泛型的两个值是什么?

我想知道C#如何比较两个通用值

它不能,这就是为什么有ICompariable和IComparer接口。。

我想知道的是背后发生了什么

如果您谈论的是.Net提供的类型,那么。。

如果您有一个已经支持IComparer的类型数组(如字符串或整数),则可以对该数组进行排序,而无需提供对IComparer的任何显式引用。在这种情况下,数组的元素将强制转换为IComparer(Comparer.default)的默认实现。

如何在Visual C#中使用IComparable和IComparar接口可能是我见过的针对您的问题的最好的文章。

IComparable的作用是提供一种比较特定类型的两个对象的方法

IComparer的作用是提供额外的比较机制。例如,您可能希望在多个字段或属性上提供类的顺序,在同一字段上提供升序和降序,或者同时提供这两种顺序。

最新更新