List<int> lst = new List<int>(); lst.Add(202); lst.Add(20); lst.Add(40); lst.Add(230); lst.Add(220); lst.Add(240); lst.Sort((m1, m2) => { return m1 > m2 ? 1 : -1; });
如上这段排序代码,在VS2015控制台程序下运行,排序完全正确。
然而放在UNITY的Start()函数中运行,排序只排了前两个元素。
原因竟然是UNTIY 的BUG:排序函数必须返回 1,0,-1三种情况,只返回两种情况则排序不正确。
然而普通C#控制台程序是没有问题的,可见UNITY有多坑。
保证UNITY上排序正确的写法如下:
void Start () { List<int> lst = new List<int>(); lst.Add(202); lst.Add(20); lst.Add(40); lst.Add(230); lst.Add(220); lst.Add(240); lst.Sort((m1, m2) => { if (m1 > m2) return 1; if (m1 < m2) return -1; return 0;
//return m1.CompareTo(m2); //或者这样写
});
}