this 方面的问题.
[code=C#][/code]
public enum enuSortOrder
{IDAsc, IDDesc, RankAsc, RankDesc}
public class Person : IComparable
{
	public static enuSortOrder intSortOrder = enuSortOrder.IDAsc;
	public int ID;
	public string Rank;
	public Person(int id, string rank)
	{ this.ID=id; this.Rank = rank; }
	public int CompareTo(object obj)
	{
		Person p = (Person)obj;
		switch ((int)intSortOrder)
		{
			case (int)enuSortOrder.IDAsc:
				return this.ID.CompareTo(p.ID);// 问题是this这里的具体值不断的发生变化,他是怎么发生变化的?
		}
	}
	private int RankCompare(string rank1, string rank2)
	{
		...
	}
	private int ConvertRankToInt(string rank)
	{
     ...
	}
}
class SortArrayList  
{
	static void Main(string[] args)  
	{
		ArrayList list = new ArrayList();
		list.Add(new Person(6, "排长"));
		list.Add(new Person(3, "团长"));
		list.Add(new Person(4, "司令"));
		list.Add(new Person(5, "旅长"));
		list.Add(new Person(7, "连长"));
		list.Add(new Person(1, "军长"));
		list.Add(new Person(2, "营长"));
		list.Add(new Person(8, "师长"));
		list.Sort();
		Console.WriteLine("Sort By ID Asc:");
		foreach (Person person in list)  
		{
			Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);
		}
	}	
}
------解决方案--------------------
使用 QuickSort 算法
http://hi.baidu.com/jzinfo/blog/item/bd8d97cae1d15e86c91768c8.html