如何使用 Visual C# 中和 IComparer IComparable 接口
2010-01-20 20:21
239 查看
概要
本文介绍使用两个接口:IComparer和IComparable。同一项目中讨论这些接口有两个原因。这些接口常用一起,和虽然接口很相似(并具有类似名称),它们提供不同用途。如果有数组类型(如字符串或整数)已经支持IComparer,则不提供任何显式引用到IComparer可排序该数组。数组的元素此时,都转换为IComparer(Comparer.Default)的默认实现对。但是,如果要提供排序或比较功能对于您自定义对象,必须实现任一或两个这些接口。
本文中引用.NETFrameworkClassLibrary下列命名空间:
System.Collections
IComparable
角色是IComparable是以提供方法来比较两个特定类型的对象。这是必需如果要为您对象提供任何排序功能。提供默认排序次序对您对象看作是IComparable。例如,如果有对象的您类型,数组并调用该数组,上排序方法IComparable提供对象比较期间排序。当实现IComparable接口,您必须实现CompareTo方法,如下所示://ImplementIComparableCompareTomethod-providedefaultsortorder. intIComparable.CompareTo(objectobj) { carc=(car)obj; returnString.Compare(this.make,c.make); }
方法中比较是取决于正在进行比较,值数据类型不同。此示例中使用String.Compare因为属性是用于比较选择是字符串。
IComparer
角色的IComparer旨在提供其他比较机制。例如,您可能希望提供排序是按几个字段或属性,类升序和降序对同一字段,或两者使用IComparer是一个两步过程。首先,声明类实现IComparer,并然后实现Compare方法:
privateclasssortYearAscendingHelper:IComparer { intIComparer.Compare(objecta,objectb) { carc1=(car)a; carc2=(car)b; if(c1.year>c2.year) return1; if(c1.year<c2.year) return-1; else return0; } }
注意IComparer.Compare方法要求第三级比较。1,0或-1是返回根据一个值是大于、,等于或小于另一个。通过此方法中切换逻辑运算符更改排序次序(升序或降序)。
第二步是要返回您IComparer对象的一个实例方法声明:
publicstaticIComparersortYearAscending() { return(IComparer)newsortYearAscendingHelper(); }
当调用重载Array.Sort方法接受IComparer在本示例,对象用作第二个参数。使用IComparer不仅限于数组。它被接受多种不同集合和控件类中以参数形式。
分步示例
以下示例演示使用这些接口。为了演示IComparer和IComparable,创建一个名为汽车类。汽车对象具有使和年属性。有关通过IComparable接口,启用使字段和通过IComparer接口启用对使字段降序排序升序排序。为通过使用的IComparer年属性提供了升序和降序排序。1. | VisualC#,中新建控制台应用程序项目。名称ConsoleEnum应用程序。 |
2. | 命名作为Host.cs,Class,然后用以下代码替换代码。 注意重作为Host.cs入VisualStudio2005,命名Program.cs。 usingSystem; |
3. | 向项目添加类。命名类汽车。 |
4. | 用下列替换代码Car.cs中:usingSystem; |
5. | 运行项目。以下输出出现在控制台窗口:Array-Unsorted |
相关文章推荐
- 如何使用 Visual C# 中和 IComparer IComparable 接口
- 如何使用 Visual C# 中和 IComparer IComparable 接口
- 如何使用 Visual C# 中和 IComparer IComparable 接口
- Visual C#2005——如何使用ToArray方法返回一个强类型数组
- Delphi 接口使用中,对象生命周期管理,如何释放需要注意的问题
- 如何使用ODBC接口访问MySQL
- 如何使用 Comparable ,Comparator 接口
- 从入门到精通,教你如何使用eoLinker成为接口测试高手
- Java中Comparator接口和Comparable接口的使用
- flask 如何使用接口以及通过json传递数据
- 如何使用 Visual C# 加密和解密文件
- IEqualityComparer 接口的使用
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- Comparable和Comparator接口的实现和使用
- android如何使用自定义JNI接口,以及NDK工具的环境搭建与使用。
- 如何使用 System.IO 和 Visual C# 读取文本文件
- Java中Comparable接口的使用
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
- Comparable接口的实现和使用
- 如何使用百度天气预报API接口