Я сортирую массив RowRanges, используя IComparer
.Он работает нормально, когда диапазон строк достигает 16. После 16 возникает исключение, утверждающее, что сортировка не выполняется, и выдается исключение, указывающее, что Soting не может быть выполнена, поскольку сравниваются значения с самим собой и значениемповторно к другому .Во время отладки я обнаружил, что проблема возникает во время объектов, взятых для сравнения.Но как это исключение возникает после 16, а до 16 работает нормально?Пожалуйста, обратитесь к приведенному ниже фрагменту кода.
internal class ColComparer : IComparer
{
public int Compare(object a, object b)
{
if (a == null || b == null)
{
return System.Collections.Comparer.Default.Compare(a, b);
}
GridRangeInfo r0 = (GridRangeInfo)a;
GridRangeInfo r1 = (GridRangeInfo)b;
if (r0 == r1)
{
return 0;
}
else
{
if (r0.RangeType == GridRangeInfoType.Table)
{
return -1;
}
else if (r1.RangeType == GridRangeInfoType.Table)
{
return 1;
}
else if (r0.RangeType == GridRangeInfoType.Rows)
{
return -1;
}
else if (r1.RangeType == GridRangeInfoType.Rows)
{
return 1;
}
else if (r0.Left != r1.Left)
{
return r0.Left - r1.Left;
}
else if (r0.Right != r1.Right)
{
return r0.Right - r1.Right;
}
else if (r0.Top != r1.Top)
{
return r0.Top - r1.Top;
}
else
{
return r0.Bottom - r1.Bottom;
}
}
}
}
class SortArray
{
//Array Data
//
GridRangeInfo[] ranges = new GridRangeInfo[this.Count];
Array.Sort(ranges, new GridRangeInfo.ColComparer());
}
Сообщите мне, где происходит исключение, и поделитесь вашими идеями, чтобы решить эту проблему.
Заранее спасибо,
Синдху