日期:2014-05-18  浏览次数:20760 次

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