学习C语言中的Icomparable接口

181 阅读6分钟

本文将讨论C sharp编程语言中的IComparable接口。使用这个接口的几个方法,我们可以对一个类中的对象进行比较,甚至排序。由于编译器不允许,比较和排序方法通常不能直接适用于类对象。相反,IComparable接口被用来比较和排序类对象。这个接口主要用于当我们创建了一个通用的对象列表,我们想对它们进行排序和比较。对象之间的比较是通过C#编程语言中一个叫做CompareTo()函数的方法完成的。

IComparable接口的CompareTo()函数。

CompareTo()函数在C#程序中对一个类的对象进行比较。在调用CompareTo()函数时,会有一个返回数据类型,如整数或字符串。但是,在对象比较的情况下,我们将使用整数数据类型,它将返回对象比较时的零和非零状态。在C#编程语言中,利用这个函数的语法写在下面。

# “public int CompareTo(Object)

我们将在Ubuntu 20.04环境下实现这个接口和它的CompareTo()函数,以更好地理解这种方法。

例子01:在Ubuntu 20.04中比较一个数组类的对象并对其进行排序

在这个例子中,我们将对一个类的对象进行比较,并按ID的升序进行排序。在这个例子中,CompareTo()函数的使用将与Sort()函数一起出现。我们将区分比较前后的排序和未排序的对象列表,以忽略IComparable接口的机制。下面的代码是在Ubuntu 20.04环境下实现的,在命令行终端执行。

Text Description automatically generated

Text Description automatically generated

在前面的代码中,我们已经形成了一个 "数组 "类。然后,我们从该类中创建了一些对象,并为它们赋值。之后,我们使用IComparable接口,使用CompareTo()函数来比较我们之前创建的对象并对其进行排序。之后,我们将使用Sort()函数,用对象的名字调用它,并打印对象数组的排序和未排序列表。

编译和执行前面的代码后,我们将得到以下输出。

Text Description automatically generated

该输出反映了已排序和未排序列表之间的差异,以及CompareTo()和Sort()函数如何同时工作,在IComparable接口中提供一个简化的答案。

例02:在Ubuntu 20.04中比较雇员类的对象并对其进行排序

这个例子将比较同一类别的实例,并按EmployeeID升序排序。在这个例子中,CompareTo()方法将与Sort()函数一起使用。为了避免忽略IComparable接口的逻辑,我们将在比较前后分别打印已排序和未排序的Employees列表,以区别它们。下面的代码是在Ubuntu 20.04环境下编写的,将在命令行终端运行。

Text Description automatically generated

Text Description automatically generated

我们在给定的代码中建立了一个 "雇员 "类。然后,我们生成了一些类对象,并为它们赋值。之后,我们利用IComparable接口,通过使用CompareTo()函数对我们之前建立的对象进行比较和排序。接下来,我们用Employee类对象的名字使用了Sort()函数,并显示了Employee类对象的已排序和未排序列表。我们使用了一个foreach循环,逐一移动对象列表,以打印以下列表。

Text Description automatically generated

这将是上一段代码在命令行终端上编译和执行时的输出。在输出中我们可以看到,由于CompareTo()函数成功地评估并帮助Sort()函数对这个列表进行了排序,因此在输出屏幕上显示了未排序的列表和基于ID的排序的雇员列表。

例子03:在Ubuntu 20.04中使用IComparable接口来修改类和它的对象

使用IComparable接口中的CompareTo()函数,我们在一个类中设计了一些方法,在本例中用来做决定或改变决定。我们将初始化这个接口中的类,以使用本例中的比较和排序功能。在这个例子中,我们将讨论CompareTo()函数的不同状态,以理解这个函数。

在这段给定的代码中,我们已经在IComparable接口中初始化了一个名为 "温度 "的类。在这个程序的主方法中,我们创建了一个变量并给它分配了随机值。有两个实体存在,根据普遍的转换来改变这些值,并提供一个独特的结果。我们将使用CompareTo()函数进行一些检查,用这些检查的值进行比较,并按升序排序,使用foreach循环将其打印在输出屏幕上。

执行前面的代码将得到以下输出。

所有随机生成的整数都通过了IComparable接口和CompareTo()方法中提供的所有标准,因为它们在输出中都是按升序排序的。

例04:使用CompareTo()方法对Ubuntu 20.04中的类对象进行排序

在这个例子中,我们将比较同一个类的实例,并按模型年份以升序排序。在这个例子中,Sort()函数将与CompareTo()方法一起使用。我们将在比较前后显示已排序和未排序的雇员列表,以防止丢失IComparable接口的逻辑。下面的代码是在Ubuntu 20.04环境下创建的,将在命令行终端使用GCC编译器执行。

Text Description automatically generated

Text Description automatically generated

在前面的代码中,我们已经形成了一个名为 "汽车 "的类。 然后,我们创建了几个带有数值的类对象,如汽车名称和车型年份。然后,使用CompareTo()函数,我们在IComparable接口中对我们之前建立的对象进行了比较和排序。之后,我们用汽车类对象的名称使用了Sort()方法,并在输出屏幕上显示了该类对象的排序和未排序的列表,以证明其差异。我们利用一个foreach循环,逐一浏览项目列表,以显示这些列表。

现在,我们将编译并执行之前的代码,得到以下输出。

Text Description automatically generated

在前面的输出中,有两种类型的列表呈现。在第一个列表中,我们有一个未排序的表示。而在第二个列表中,这些对象是根据汽车的型号年份来排序的。

总结

这篇文章讨论了C语言中的Icomparable接口。我们还讨论了这个接口中的一个比较函数,叫做比较两个函数。这个函数对类似类的多个对象进行比较,可以对要修改和排序的对象进行多次检查。在这之后,我们在Ubuntu 20.04环境中实现了这个现象的几个例子。