读书人

[100分]自定义数据类型的范型排序解决

发布时间: 2012-02-19 19:43:38 作者: rapoo

[100分]自定义数据类型的范型排序
小弟我遇到这样一个问题:

我定义了一个类 如

C# code
 public Class Man(){public Man(int Age){...}public int Age;//年龄属性}


下面有添加了n个Man的范型
C# code
List<Man> men = new List<Man>();men.Add(new Man(5));men.Add(new Man(6));men.Add(new Man(7));

我想通过Age 对这个men范型进行排序 返回最大的一个年龄的men的下标

C# code
 public int Compare(object manA, object Manb)    {        if ((Man)manA.Age> (Man)manB.Age)        {            return 1;        }else if ((Man)manA.Age== (Man)manB.Age)            return 0;        else return -1;    }

可能会有这样一个函数

问题是:(1)这样一个函数是不是要写在一个类里面,请补全代码
(2)这个接口或者说方法如何调用

请指教


[解决办法]
我想通过Age 对这个men范型进行排序 返回最大的一个年龄的men的下标 ...
都已经排序了..还最大下标。0就是最大的。

public class CompareMan: IComparer<Man>
{
public int Compare(Man manA, Man Manb)
{
return manA.Age.CompareTo(manB.Age);//从小到达
//从大道小 return -manA.Age.CompareTo(manB.Age);
}
}

List<Man> men = new List<Man>();
men.Add(new Man(5));
men.Add(new Man(6));
men.Add(new Man(7));
men.Sort(new CompareMan());
[解决办法]
public class Man
{
public Man(int age) {
_age = age;
}
int _age = 0;
public int Age {
get { return _age; }
set { _age = value; }
}


}

public class CompareMan : IComparer<Man>
{
public int Compare(Man manA, Man Manb)
{
return -manA.Age.CompareTo(Manb.Age);
}
}
调用代码:
List<Man> men = new List<Man>();
men.Add(new Man(5));
men.Add(new Man(60));
men.Add(new Man(7));
men.Sort(new CompareMan());
men[0]就是岁数最大的。

读书人网 >C#

热点推荐