今天開始寫Paser了,不過是從SharpDevelop借過來而已(不想重新發明輪子,^_^)。但是,還是對原先的代碼作了一些修改,即使到了RC2了,SharpDevelop的代碼中還是存在問題。今天看代碼是就發現了兩處。比如下面的代碼:
static public int Compare(IList a, IList b, IComparer comparer)
{
if (a == null || b == null) {
return 1;
}
if (a.Count != b.Count) {
return Math.Sign(a.Count - b.Count);
}
int limit = (a.Count < b.Count) ? a.Count : b.Count;
for(int i=0; i < limit; i++) {
if (a[i] is IComparable && b[i] is IComparable) {
int cmp = comparer.Compare(a[i], b[i]);
if (cmp != 0) {
return cmp;
}
}
}
return a.Count - b.Count;
}
第二個if塊讓我迷惑了好一陣。看mono中已經糾正了,懷疑那段語句是不是在喝酒只有寫的。