[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]就是岁数最大的。