C#中IComparer的使用
来源:互联网 发布:好的英语软件 编辑:程序博客网 时间:2024/05/01 12:28
(一). 说明 1.继承IComparer接口,可以自定义比较器 (二).示例代码 using System; namespace 比较器IComparer
2.由于Array.Sort()方法接受IComparer参数,进行自定义排序规则.
示例中也将IComparer作为Sort方法的参数,将Icomparer应用于Array.Sort()方法
using System.Collections;
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Person
{
public int ID;
public int Age;
public Person()
{
ID=0;
Age=0;
}
public Person(int id,int age)
{
ID=id;
Age=age;
}
public void Show()
{
Console.WriteLine("年龄={0},代号={1}",Age,ID);
}
public static void ShowPersons(Person []persons)
{
foreach(Person person in persons)
Console.WriteLine("年龄={0},代号={1}",person.Age,person.ID);
}
}
public class PersonComparer:System.Collections.IComparer
{
int System.Collections.IComparer.Compare(object x,object y)
{
if(x==null||y==null)
throw new ArgumentException("参数不能为空");
Person temp=new Person();
if(!x.GetType().Equals(temp.GetType())||!y.GetType().Equals(temp.GetType()))
throw new ArgumentException("类型不一致");
temp=null;
Person personX=(Person)x;
Person personY=(Person)y;
if(personX.ID>personY.ID)
return 1;
if(personX.ID<personY.ID)
return -1;
if(personX.Age>personY.Age)
return 1;
if(personX.Age<personY.Age)
return -1;
return 0;
}
}
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Random rand=new Random();
Person[] persons=new Person[6];
Console.WriteLine("随机产生的Person数组为:");
for(int i=0;i<persons.GetLength(0);i++)
{
persons[i]=new Person();
persons[i].ID=rand.Next()%10;
persons[i].Age=rand.Next()%50;
persons[i].Show();
}
PersonComparer personComparer=new PersonComparer();
//System.Collections.IComparer personComparer=new IComparer;
Array.Sort(persons,personComparer);
Console.WriteLine("排序后的结果:");
Person.ShowPersons(persons);
Person personToBeFind=new Person();
Console.WriteLine("输入ID");
personToBeFind.ID=int.Parse(Console.ReadLine());
Console.WriteLine("输入Age");
personToBeFind.Age=int .Parse(Console.ReadLine());
int index=Array.BinarySearch(persons,personToBeFind,personComparer);
if(index>=0)
Console.WriteLine("待查找的元素是数组的第{0}个元素",index+1);
else
Console.WriteLine("对不起,没有所找的元素");
Console.ReadLine();
}
}
}
- C#中IComparer的使用
- C#中IComparable<T>和IComparer<T>接口的使用
- C#中IComparable和IComparer的应用
- IComparer的简单使用
- C#中对对象的排序重写IComparer接口
- C#中IComparable接口和IComparer接口应用的实例
- C# 使用IComparer自定义List类的排序方案
- C# 使用IComparer自定义List类的排序方案
- C#中IComparer和IComparable接口
- C#比较器接口IComparer的实现
- C# 中 List.Sort运用(IComparer<T>)排序用法
- 如何使用 Visual C# 中和 IComparer IComparable 接口
- 如何使用 Visual C# 中和 IComparer IComparable 接口
- 如何使用 Visual C# 中和 IComparer IComparable 接口
- Effective C# 使用IComparable和IComparer接口实现排序关系
- c# 接口IComparer<T>
- c# IComparer比较字符串
- c# 实现IComparable、IComparer接口、Comparer类的详解
- ArrayList的toString()方法
- 实例解析shell子进程(subshell )
- 欢迎来我的博客
- 激励人生10张英文励志海报
- sql中遇到非正常操作引起的数据库文件破坏的恢复
- C#中IComparer的使用
- 简单URL的重写
- 架构师书单
- WIN 7桌面及快捷方式无法打开的解决办法
- 使用代理服务器与路由器(NAT主机)上网的区别
- [sql server] 行转列问题总结 - 2、列转行
- 整型与字符型的相互转换(C、C++)(转载)
- 行转列问题总结 - 3、行列互转
- 启明应用基础平台发布