class Program { static void Main(string[] args) { List<string> list = new List<string>(); list.Add("1474"); list.Add("1.1"); list.Add("881"); list.Add("wg"); list.Add("d90"); list.Add("json"); list.Sort(new ASCIIStringCompare()); } } public class ASCIIStringCompare : IComparer<string> { public int Compare(string x, string y) { if (x.Length==0) { return -1; } if (y.Length==0) { return 1; } if ((int)x.First()==(int)y.First()) { return Compare(x.Substring(1), y.Substring(1)); } return ((int)x.First()).CompareTo((int)y.First()); } }
4.0结果
4.5结果
那么,原因是项目是4.0的,怎么样在4.0下实现4.5情况下的结果
解决方案
40
本人也说不清楚,也没观察到本人与本人比较时有什么异常
不如回避掉吧
……
if (x.CompareTo(y) == 0) return 0; //假如是本人与本人比较
if ((int)x.First() == (int)y.First())
……..
不如回避掉吧
……
if (x.CompareTo(y) == 0) return 0; //假如是本人与本人比较
if ((int)x.First() == (int)y.First())
……..